React Native 键盘遮挡问题几行代码解决

先看几张效果图:

  • 没做任何处理:
View.gif
KeyboardAvoidingView.gif
ScrollView.gif

根据实际效果,这里只介绍怎么用ScrollView来解决键盘遮挡问题。真的是几行代码的事:

import {
    ......
    ScrollView,  // 引入相关组件
    Keyboard,
} from 'react-native';


// 监听键盘弹出与收回
componentDidMount() {
        this.keyboardWillShowListener = Keyboard.addListener('keyboardWillShow',this.keyboardDidShow);
        this.keyboardWillHideListener = Keyboard.addListener('keyboardWillHide',this.keyboardDidHide);
    }

//注销监听
componentWillUnmount () {
        this.keyboardWillShowListener && this.keyboardWillShowListener.remove();
        this.keyboardWillHideListener && this.keyboardWillHideListener.remove();
    }

//键盘弹起后执行
keyboardDidShow = () =>  {
        this._scrollView.scrollTo({x:0, y:100, animated:true});
    }

//键盘收起后执行
keyboardDidHide = () => {
        this._scrollView.scrollTo({x:0, y:0, animated:true});
    }

用ScrollView将TextInput等组件包一层:

<ScrollView ref={component => this._scrollView=component} scrollEnabled={false}
                        keyboardShouldPersistTaps={true}>
      ...... // 其他组件代码

</ScrollView>

这样基本就将键盘遮挡问题很好的解决了,位移100可以根据实际情况做一些修改,你也可以直接设成键盘的高度。

这里引入另一个知识点对组件的引用(refs)

哈哈,貌似代码不止几行,而是十多行😝。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,806评论 25 708
  • Demo:MultiTextInputScrollView最近一段时间做了一个基于React Native的APP...
    who_young阅读 1,031评论 3 3
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 16,383评论 4 61
  • 西部片除了豪侠劣绅,快意江湖,铁血戈壁,驿路狂飙之外,还有一份对自然的向往在里头,青山翠谷,牧场夕阳,那是跟大都市...
    晚霞消失之时阅读 371评论 0 0
  • 青春校园 师大的天空有些透蓝 仿佛能看透我脆弱的心 操场烦杂的漫步 只有深呼吸 记忆悠长 像天边的云彩 铺展大片大...
    世界不和平阅读 327评论 0 0

友情链接更多精彩内容