自定义键盘的实现效果如下:
iOS端:
Android端:
实现功能(iOS和Android):
- 输入框没有自定义,直接使用RN的TextInput
- 点击完成可以移除焦点
- 长按回退键可以删除光标前所有字符
- 字母和字符键盘点击会显示Tip
- 字母、字符、数字键盘可相互快速切换(为视图做了懒加载和缓存)
大致思路
1、如何隐藏系统键盘
用RN为iOS和Android双平台共用一套自定义键盘,使用RN的TextInput作为输入框,这样TextInput该怎么使用就怎么使用,因此问题的关键就在于如何隐藏系统键盘。在iOS中使用inputView
可以轻松实现自定义键盘,在Android中自定义键盘并非像iOS那么直接,需要手动隐藏系统键盘,然后监听输入框的焦点事件来控制自定义键盘的显示和隐藏。
可以看以下两个示例大致了解下:
iOS自定义键盘
Android 自定义键盘实现
Android中自定义键盘有一个让人容易误解的地方,就是
KeyboardView
。可以在Android 自定义键盘实现的Demo中看到有hideSystemSoftKeyboard
方法,用来把EditText的系统键盘给隐藏,然后再使用KeyboardView
加入到视图的底部布局中,KeyboardView
使用KeyboardView.OnKeyboardActionListener
来监听键盘点击,使用Ke