无论原生还是h5以及ReactNative 中对于键盘的遮挡问题一直是个难题
而即便对于一些出名的第三方库,在对于自定义inputView和RN中都有异常情况
RN中键盘遮挡问题也是个热门,google一下就会发现都在查找解决方法
例如:
其实在我看来也是个很简单的问题,因为大部分人都进入误区中,无法看透本质
首先说明一下:安卓是不需要考虑这个问题的,因为原生自带防遮挡效果
引入原生库,在原生控制,才能做到
请参考我的另外一篇文章
iOS键盘防键盘遮挡库 KKInputAvoidKeyBoard 每个 UITextField 都可以自己控制
首先说明:
FaceBook 推出了 ReactNative 的技术,把前端开发引入了另一个方向,支持跨平台开发
技术只是技术,代码只是代码,人是活的
没有看源码的程序员不是好程序员,没有修改过源码的程序员更不是好程序员(在有需求或者源码出问题或不完善的情况下)
看过 KKInputAvoidKeyBoard 的应该都知道,可以对每一个输入框做键盘防遮挡,并且用法超级简单,最重要的是,已经上线。并且我们公司做各种信息录入,有大量的输入框,自定义键盘,自定义 inputView 等,均已测试无问题。
isAvoidKeyBoardEnable 来控制是否防遮挡
avoidKeyBoardDistance 来控制输入框底部到键盘的距离
so easy
修改 RN 源码
另外多说一句,建议所有项目都 pod 引入 ReactNative
s.subspec "RCTText" do |ss|
ss.dependency "KKInputAvoidKeyBoard"
ss.dependency "React/Core"
ss.source_files = "Libraries/Text/*.{h,m}"
end
8925C181121053238C9327038B67F376.jpg
*
8829859A835B595CF14A6ED91139B88E.jpg
在两个 OC 文件中
#import <KKInputAvoidKeyBoard/KKInputAvoidKeyBoard-Swift.h>
如此便给 RN 中所有的 InputText 增加了以下两个属性和功能
RN中无代码侵入,项目无侵入
/* 键盘遮挡后,是否自动调整,防止键盘遮挡 */
isAvoidKeyBoardEnable={true}
/* 键盘顶起后,底部距离键盘的距离 */
avoidKeyBoardDistance={20}
<InputText isAvoidKeyBoardEnable={true} avoidKeyBoardDistance={100}/>