open close show hide popupBoard closeBoard popupKeyboard closeKeyboard value insertValue addEventListener setPlaceholder reloadExtraBoard cancelRecord setInputBarBgColor
为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。
此插件输入框为从底部弹出建议键盘弹出模式设置为resize,如设置为pan会造成整个页面向上平移。键盘弹出模式设置
UIChatBox 插件是一个聊天输入框插件,开发者可自定义该输入框的功能。通过 open 接口可在当前 window 底部打开一个输入框,该输入框的生命属于当前 window 所有。当输入框获取焦点后,会自动弹动到软键盘之上。开发者可通过监听输入框距离底部弹动的高度,来改变聊天对话界面的高度,从而实现类似 QQ 聊天页面的功能。UIChatBox 插件是 chatBox 插件的优化版。
本插件的主要功能有:
1,自定义表情集:open 接口的 emotionPath 参数
2,自定义输入框最大自适应高度:open 接口的 maxRows 参数
3,输入框占位提示文字:open 接口的 placeholder 参数
4,自定义是否显示附件功能按钮:
5,自定义显示录音按钮:
6,手动弹出、关闭软键盘功能
7,输入框插入、获取当前文本
8,动态刷新附加功能面板
功能详情参考接口参数。
插件预览图如下:

***本插件源码已开源,地址
打开聊天输入框
open({parmas}, callback(ret))
placeholder:
autoFocus:
maxRows:
emotionPath:
.json配置文件)的路径(本地路径,fs://、widget://)。**.json文件内的 name 值必须与表情文件夹内表情图片名对应。**另附:表情文件夹资源示例.json配置文件格式如下:[
    {'name': 'Expression_1', 'text': '[微笑]'},
    {'name': 'Expression_2', 'text': '[撇嘴]'}
]
.json配置文件所在目录:
emotionGridColumns:
texts:
{
    recordBtn: {                        //(可选项)JSON对象;录音按钮文字内容
        normalTitle: '按住 说话',        //(可选项)字符串类型;按钮常态的标题,默认:'按住 说话'
        activeTitle: '松开 结束'         //(可选项)字符串类型;按钮按下时的标题,默认:'松开 结束'
    },
    sendBtn: {                         //(可选项)JSON对象;发送按钮文字内容,在 iOS 平台上对键盘内按钮无效
        title: '发送'                   //(可选项)字符串类型;按钮常态的标题,默认:'发送'
    }
}
styles:
{
    topDivider:{                        //(可选项)顶部分割线配置
    width:3,                        //(可选项)顶部分割线的粗细,默认:0
    color:'#000'                    //(可选项)顶部分割线的颜色;默认:#000 ;支持图片设置(fs:// & widget://)
    },
    inputBar:{                          //(可选项)JSON对象;输入区域(输入框及两侧按钮)整体样式
        borderColor: '#d9d9d9',         //(可选项)字符串类型;输入框区域上下边框的颜色,支持 rgb,rgba,#;默认:'#d9d9d9'
        bgColor: '#f2f2f2',             //(可选项)字符串类型;输入框区域的整体背景色,支持 rgb,rgba,#;默认:'#f2f2f2'
    textColor:'#000',               //(可选项)字符串类型;输入文字的颜色;默认:#000,支持 rgb,rgba,#;默认:'#f2f2f2'
    placeholderColor:'',            //(可选项)字符串类型;提示文字的颜色;默认:系统默认,支持 rgb,rgba,#;默认:'#f2f2f2'
    textSize:16,                    //(可选项)数字类型;默认:16
    textMarginLeft:5                //(可选项)数字类型;光标距离左边框的距离,默认:5
    },
    inputBox: {                         //(可选项)JSON对象;输入框样式
        borderColor: '#B3B3B3',         //(可选项)字符串类型;输入框的边框颜色,支持 rgb,rgba,#;默认:'#B3B3B3'
        bgColor: '#f2f2f2',             //(可选项)字符串类型;输入框的背景色,支持 rgb,rgba,#;默认:'#f2f2f2'
        boardBgColor: '#f2f2f2',        //(可选项)字符串类型;面板的背景色(表情面板,附加面板),支持 rgb,rgba,#;默认:'#f2f2f2'
        topMargin:10,                   //(可选项)数字类型;输入框距离顶部的边距;默认:10
    borderCorner:5,                 //(可选项)数字类型;默认:5
    leftIcon:{                      //(可选项)JSON对象,输入框左侧图标  本参数仅支持android
        size:20,                //(可选项)数字类型;icon的大小;默认:20
        path:'widget://res/left_icon.jpg'//字符串类型;icon的路径;支持widget:// fs://
    }
    },
    emotionBtn: {                       //(可选项)JSON对象;表情按钮样式;不传则不显示表情按钮
        normalImg: 'widget://'          //(可选项)字符串类型;表情按钮常态的背景图片(本地路径,fs://、widget://);默认:笑脸小图标,
    },
    extrasBtn: {                        //(可选项)JSON对象;附加功能按钮样式,不传则不显示附加功能按钮
        normalImg: 'widget://'          //(可选项)字符串类型;附加功能按钮常态的背景图片(本地路径,fs://、widget://)
    },
    keyboardBtn: {                      //JSON对象;键盘按钮样式
        normalImg: 'widget://'          //字符串类型;键盘按钮常态的背景图片(本地路径,fs://、widget://);默认:键盘小图标
    },
    speechBtn: {                        //(可选项)JSON对象;输入框左侧按钮样式,不传则不显示左边的语音按钮
        normalImg: 'widget://',         //字符串类型;左侧按钮常态的背景图片(本地路径,fs://、widget://)
        activeImg:''                    //字符串类型;左侧按钮按下的背景图片(本地路径,fs://、widget://)
    },
    recordBtn: {                        //JSON对象;“按住 录音”按钮的样式
        normalBg: '#c4c4c4',            //(可选项)字符串类型;按钮常态的背景,支持 rgb,rgba,#,图片路径(本地路径,fs://、widget://);默认:'#c4c4c4'
        activeBg: '#999999',            //(可选项)字符串类型;按钮按下时的背景,支持 rgb,rgba,#,图片路径(本地路径,fs://、widget://);默认:'#999999';normalBg 和 activeBg 必须保持一致,同为颜色值,或同为图片路径
        color: '#000',                  //(可选项)字符串类型;按钮标题文字的颜色,支持 rgb,rgba,#,默认:'#000000'
        size: 14                        //(可选项)数字类型;按钮标题文字的大小,默认:14
   },
   recordPanelBtn:{                     //JSON对象;录音面板样式
     normalImg: '',        //(可选项)字符串类型;按钮常态的图片
     activeImg: ''         //(可选项)字符串类型;按钮按下时的图片
     width:100,           //(可选项)数字类型;按钮的宽度,默认:100
     height:100           //(可选项)数字类型;按钮的高度,默认:100
   },
    indicator: {                        //(可选项)JSON对象;表情和附加功能面板的小圆点指示器样式,若不传则不显示该指示器
        target: 'both',                 //(可选项)字符串类型;配置指示器的显示区域;默认:'both'
                                        //取值范围:
                                        //both(表情和附加功能面板皆显示)
                                        //emotionPanel(表情面板显示)
                                        //extrasPanel(附加功能面板显示)
        color: '#c4c4c4',               //(可选项)字符串类型;指示器颜色;支持 rgb、rgba、#;默认:'#c4c4c4'
        activeColor: '#9e9e9e'          //(可选项)字符串类型;当前指示器颜色;支持 rgb、rgba、#;默认:'#9e9e9e'
    },
    sendBtn: {                         //(可选项)JSON对象;发送按钮样式,本参数对 iOS 平台上的键盘内发送按钮无效
        bg: '#4cc518',                 //(可选项)字符串类型;发送按钮背景颜色,支持 rgb、rgba、#、img;默认:#4cc518
        titleColor: '#ffffff',          //(可选项)字符串类型;发送按钮标题颜色;默认:#ffffff
        activeBg: '#46a91e',            //(可选项)字符串类型;发送按钮背景颜色,支持 rgb、rgba、#、img;默认:无
        titleSize: 13                    //(可选项)数字类型;发送按钮标题字体大小;默认:13
    }
}
isShowSendBtn:
disableSendMessage:
extras:
{
    titleSize: 10,                  //(可选项)数字类型;标题文字大小,默认:10
    titleColor: '#a3a3a3',          //(可选项)字符串类型;标题文字颜色,支持 rgb、rgba、#;默认:'#a3a3a3'
    isAdaptScreenSize:true          // (可选项) 布尔类型;附加功能按钮的样式是否自适应屏幕大小布局,改参数为false时,则每一行固定显示四个,若为true,则根据屏幕大小自动适配 默认:true
    isCenterDisplay:false          // (可选项)布尔类型;附加功能按钮的样式是否居中显示,参数为false时,isAdaptScreenSize有效,若为true,则按钮居中显示; 默认:false
    btns: [{                        //数组类型;附加功能按钮的样式
        title: '图片',              //(可选项)字符串类型;附加功能按钮的标题内容
        normalImg: '',              //(可选项)字符串类型;按钮常态的背景图片(本地路径,fs://、widget://)
        activeImg: ''               //(可选项)字符串类型;按钮按下时的背景图片(本地路径,fs://、widget://)
    }],
    isCustom:false ,                //是否自定义附加面板上按钮图标和文字间距及其左右边距;如果为true时,isAdaptScreenSize,isCenterDisplay两个参数无效,margin参数有效。为false时isAdaptScreenSize,isCenterDisplay两个参数有效,margin参数无效 ;(暂时只支持iOS)
    margin:{   //(暂时只支持iOS)
       horizontal :20                //图标的水平间距
       vertical:20              //标题与图标的间距
       width:50,                 //图标的宽度(宽度高度一样)
       titleHeight:标题的高度
    },
    gridHorizontalPadding:20,    // 网格水平内边距;数字类型;默认:0 (暂仅支持Android)
    titleTopMargin:10            // 标题顶部边距(距离顶部图片);数字类型;默认:0 (暂仅支持Android)
}
recordType:
isClose:
ret:
{
    eventType: 'show',  //字符串类型;回调的事件类型,
                        //取值范围:
                        //show(该插件打开成功)
                        //send(用户点击发送按钮)
                        //clickExtras(用户点击附加功能面板内的按钮)
                        //clickRecord(用户点击录音功能面板内的按钮)
                        //emotionShowOrHide (表情面板是否显示)
    index: 0,           //数字类型;当 eventType 为 clickExtras 时,此参数为用户点击附加功能按钮的索引,否则为 undefined
    msg: '',             //字符串类型;当 eventType 为 send 时,此参数返回输入框的内容,否则返回 undefined
    inputBarHeight:30,   //数字类型;输入框及左右按钮整体区域的高度
    emotionStatus:true   //布尔类型;true|false表情是否显示;与emotionShowOrHide字段一起返回
}
var UIChatBox = api.require('UIChatBox');
UIChatBox.open({
    placeholder: '',
    maxRows: 4,
    emotionPath: 'widget://res/img/emotion',
    texts: {
        recordBtn: {
            normalTitle: '按住说话',
            activeTitle: '松开结束'
        },
        sendBtn: {
            title: 'send'
        }
    },
    styles: {
        inputBar: {
            borderColor: '#d9d9d9',
            bgColor: '#f2f2f2'
        },
        inputBox: {
            borderColor: '#B3B3B3',
            bgColor: '#FFFFFF'
        },
        emotionBtn: {
            normalImg: 'widget://res/img/chatBox_face1.png'
        },
        extrasBtn: {
            normalImg: 'widget://res/img/chatBox_add1.png'
        },
        keyboardBtn: {
            normalImg: 'widget://res/img/chatBox_key1.png'
        },
        speechBtn: {
            normalImg: 'widget://res/img/chatBox_key1.png'
        },
        recordBtn: {
            normalBg: '#c4c4c4',
            activeBg: '#999999',
            color: '#000',
            size: 14
        },
        indicator: {
            target: 'both',
            color: '#c4c4c4',
            activeColor: '#9e9e9e'
        },
        sendBtn: {
            titleColor: '#4cc518',
            bg: '#999999',
            activeBg: '#46a91e',
            titleSize: 14
        }
    },
    extras: {
        titleSize: 10,
        titleColor: '#a3a3a3',
        btns: [{
            title: '图片',
            normalImg: 'widget://res/img/chatBox_album1.png',
            activeImg: 'widget://res/img/chatBox_album2.png'
        }, {
            title: '拍照',
            normalImg: 'widget://res/img/chatBox_cam1.png',
            activeImg: 'widget://res/img/chatBox_cam2.png'
        }]
    }
}, function(ret, err) {
    if (ret) {
        api.alert({msg: JSON.stringify(ret)});
    } else {
        api.alert({msg: JSON.stringify(err)});
    }
});
iOS系统,Android系统
可提供的1.0.0及更高版本
关闭聊天输入框
close()
var UIChatBox = api.require('UIChatBox');
UIChatBox.close();
iOS系统,Android系统
可提供的1.0.0及更高版本
显示聊天输入框
show()
var UIChatBox = api.require('UIChatBox');
UIChatBox.show();
iOS系统,Android系统
可提供的1.0.0及更高版本
隐藏聊天输入框
hide()
var UIChatBox = api.require('UIChatBox');
UIChatBox.hide();
iOS系统,Android系统
可提供的1.0.0及更高版本
弹出键盘
popupKeyboard()
var UIChatBox = api.require('UIChatBox');
UIChatBox.popupKeyboard();
iOS系统,Android系统
可提供的1.0.0及更高版本
收起键盘
closeKeyboard()
var UIChatBox = api.require('UIChatBox');
UIChatBox.closeKeyboard();
iOS系统,Android系统
可提供的1.0.0及更高版本
弹出表情、附加功能面板
popupBoard({params})
target:
var UIChatBox = api.require('UIChatBox');
UIChatBox.popupBoard({
    target: 'extras'
});
iOS系统,Android系统
可提供的1.0.0及更高版本
收起表情、附加功能面板
closeBoard()
var UIChatBox = api.require('UIChatBox');
UIChatBox.closeBoard();
iOS系统,Android系统
可提供的1.0.0及更高版本
获取或设置聊天输入框的内容
value({params}, callback(ret))
msg:
ret:
{
    status: true,        //布尔型;true||false
    msg: ''              //字符串类型;输入框当前内容文本
}
var UIChatBox = api.require('UIChatBox');
//设置输入框的值
UIChatBox.value({
    msg: '设置输入框的值'
});
//获取输入框的值
UIChatBox.value(function(ret, err) {
    if (ret) {
        api.alert({msg: JSON.stringify(ret)});
    } else {
        api.alert({msg: JSON.stringify(err)});
    }
});
iOS系统,Android系统
可提供的1.0.0及更高版本
向聊天输入框的指定位置插入内容
insertValue({params})
index:
msg:
var UIChatBox = api.require('UIChatBox');
UIChatBox.insertValue({
    index: 10,
    msg: '这里是插入的字符串'
});
iOS系统,Android系统
可提供的1.0.0及更高版本
事件监听
addEventListener({params}, callback(ret))
target:
name:
ret:
{
    inputBarHeight: 60,    //数字类型;输入框及左右按钮整体区域的高度,仅当监听 inputBar 的 move 和 change 事件时本参数有值
    panelHeight: 300 ,     //数字类型;输入框下边缘距离屏幕底部的高度,仅当监听 inputBar 的 move 和 change 事件时本参数有值
    value: ''              //字符串类型;输入框当前内容,仅当 target 为 inputBar name 为 valueChanged 时有值
}
//监听 recordBtn 按钮
var UIChatBox = api.require('UIChatBox');
UIChatBox.addEventListener({
    target: 'recordBtn',
    name: 'press'
}, function(ret, err) {
    if (ret) {
        api.alert({msg: JSON.stringify(ret)});
    } else {
        api.alert({msg: JSON.stringify(err)});
    }
});
//监听 inputBar
var UIChatBox = api.require('UIChatBox');
UIChatBox.addEventListener({
    target: 'inputBar',
    name: 'move'
}, function(ret, err) {
    if (ret) {
        api.alert({msg: JSON.stringify(ret)});
    } else {
        api.alert({msg: JSON.stringify(err)});
    }
});
iOS系统,Android系统
可提供的1.0.0及更高版本
重设聊天输入框的占位提示文本
setPlaceholder({params})
placeholder:
var UIChatBox = api.require('UIChatBox');
UIChatBox.setPlaceholder({
    placeholder: '修改了占位提示内容'
});
iOS系统,Android系统
可提供的1.0.0及更高版本
重新加载(刷新)附加功能面板,open时必须添加附加功能按钮及其面板参数
reloadExtraBoard({params})
extras:
{
    titleSize: 10,                  //(可选项)数字类型;标题文字大小,默认:10
    titleColor: '#a3a3a3',          //(可选项)字符串类型;标题文字颜色,支持 rgb、rgba、#;默认:'#a3a3a3'
    btns: [{                        //数组类型;附加功能按钮的样式
        title: '图片',               //(可选项)字符串类型;附加功能按钮的标题内容
        normalImg: '',              //(可选项)字符串类型;按钮常态的背景图片(本地路径,fs://、widget://)
        activeImg: ''               //(可选项)字符串类型;按钮按下时的背景图片(本地路径,fs://、widget://)
    }]
}
var UIChatBox = api.require('UIChatBox');
UIChatBox.reloadExtraBoard({
    extras: {
        titleSize: 10,
        titleColor: '#a3a3a3',
        btns: [{
            title: '图片',
            normalImg: 'widget://res/img/chatBox_album1.png',
            activeImg: 'widget://res/img/chatBox_album2.png'
        }, {
            title: '拍照',
            normalImg: 'widget://res/img/chatBox_cam1.png',
            activeImg: 'widget://res/img/chatBox_cam2.png'
        }, {
            title: '拍照',
            normalImg: 'widget://res/img/chatBox_cam1.png',
            activeImg: 'widget://res/img/chatBox_cam2.png'
        }, {
            title: '拍照',
            normalImg: 'widget://res/img/chatBox_cam1.png',
            activeImg: 'widget://res/img/chatBox_cam2.png'
        }, {
            title: '拍照',
            normalImg: 'widget://res/img/chatBox_cam1.png',
            activeImg: 'widget://res/img/chatBox_cam2.png'
        }, {
            title: '拍照',
            normalImg: 'widget://res/img/chatBox_cam1.png',
            activeImg: 'widget://res/img/chatBox_cam2.png'
        }, {
            title: '拍照',
            normalImg: 'widget://res/img/chatBox_cam1.png',
            activeImg: 'widget://res/img/chatBox_cam2.png'
        }, {
            title: '拍照',
            normalImg: 'widget://res/img/chatBox_cam1.png',
            activeImg: 'widget://res/img/chatBox_cam2.png'
        }, {
            title: '拍照',
            normalImg: 'widget://res/img/chatBox_cam1.png',
            activeImg: 'widget://res/img/chatBox_cam2.png'
        }]
    }
});
iOS系统,Android系统
可提供的1.0.0及更高版本
取消录音
cancelRecord()
var UIChatBox = api.require('UIChatBox');
UIChatBox.cancelRecord();
iOS系统,Android系统
可提供的1.0.0及更高版本
这只面板的背景颜色
setInputBarBgColor({params})
color:
var UIChatBox = api.require('UIChatBox');
UIChatBox.setInputBarBgColor({
    color: '',
});
iOS系统,Android系统
可提供的1.0.0及更高版本