React Native android 平台的键盘处理方案
来源:互联网 发布:2017年网络热词 编辑:程序博客网 时间:2024/06/05 15:17
在点评列表转RN 的过程中,android 的键盘处理,也存在一定的问题,因为android 的手机存在back 键,对于常规意义上的android 键盘,存在2种场景,
一种是,在键盘弹起的时候,一次按back 键,键盘消失,第二次按,页面消失
第二种是,在键盘弹起的时候,第一次主动的按back 键,键盘消失,按一次界面消失
js 中 有 Keyboard 这个类来处理键盘相关的操作
具体处理方式
componentWillMount() { if (Platform.OS === 'android') { this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this.keyboardDidShow); this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this.keyboardDidHide); } } componentWillUnmount() { if (Platform.OS === 'android') { this.keyboardDidShowListener.remove(); this.keyboardDidHideListener.remove(); } }
注册监听
代码中添加回调方法
keyboardDidShow() { this.isShowkeybord = true; } keyboardDidHide() { this.closeTime = new Date().getTime(); this.isShowkeybord = false;}
哪我们在点击back 键的时候会触发
handlerOnRequestClose() {}
哪我门就在这个方法中处理我门back 相关的事件。其实在处理的时候,区分上面上面说的哪两种情况,并且在点击back 的时候,keyboarDidHide() 和 handlerOnRequestClose() 先后执行,所以不好控制区分这两种场景
现在提出一种结局方案,因为按两次back 的第二次 上面的两种方法 是接连执行的,时间很短暂,要是 手动关闭键盘,然后点击back 键的时候,上面两个方法的执行时间差 是大于连续点击back 的时间差的。所以我门通过判断时间差来区分两者不同的点击
//android handlerOnRequestClose() { const now = new Date().getTime(); const span = now - this.closeTime; if (span < 400 && !this.state.isHasClosed) { this.setState({ isHasClosed: true }); return; } if (!this.isShowkeybord) { this.close(); this.setState({ isHasClosed: false }); } }
这个span 是个统计值,这只是一种无奈的结局方案,后面还希望有更好的结局方案。
阅读全文
0 0
- React Native android 平台的键盘处理方案
- 《React-Native系列》44、基于多个TextInput的键盘遮挡处理方案优化
- React Native平台与Android本地模块之间的调用
- react-native之tabBar在Android平台上的实现
- React Native在Android平台运行gif的解决方法
- React Native在Android平台运行gif的解决方法
- react-native cookie 的处理
- React Native双平台 (android material风格)!!!!
- react native关闭键盘
- React-Native版本升级的实践方案
- React Native适配iphonex的方案
- React Native适配iphonex的方案
- 《React-Native系列》33、 键盘遮挡问题处理
- 《React-Native系列》33、 键盘遮挡问题处理
- Native、Hybrid、React Native、Web App方案的分析比较
- React-Native编写针对平台的代码
- React Native for Android 异常处理概览
- React Native for Android 异常处理概览
- jsonp和GET、POST的原理解析及GET和POST的区别
- Java培训第四天
- Struts2,Spring,Hibernate优缺点
- JavaScript学习之三元表达式
- 操作系统-动态分区分配模拟实验
- React Native android 平台的键盘处理方案
- Dockerfile中的ARG指令详解
- Sort summary2
- 20170615-leetcode-409. Longest Palindrome
- struts2过滤器与拦截器组合使用,过滤拦截非法请求
- 大数据-十四
- JDK 8的新功能简介(翻译官方简介)
- 操作系统-使用动态优先权的进程的调度算法的模拟
- 使用charles抓取windows系统下android APP的请求