zoukankan      html  css  js  c++  java
  • React Native ScrollView中TextInput焦点问题

    前言

    在项目中有输入信息页面,两个TextInput在同一个页面,并且在ScrollView中,总觉得点击有毛病。

    分析区别

    • 在ScrollView中的多个TextInput

    假设第一个TextInput为A,第二个TextInput为B,则A和B的焦点获取顺序如下:
    a.点击A,A获得焦点,并且软键盘弹出,A可进行输入;
    b.A输入完成,此时分三种操作:
    (1)点击软键盘的“完成”按钮 ,此时软键盘隐藏,A失去焦点
    (2)点击软键盘的向下隐藏按钮,此时软键盘隐藏,A保留焦点
    (3)不做任何操作,此时软键盘显示,A保留焦点
    c.点击B,也分三种情况:
    (1)B直接得到焦点
    (2)第一次点击使A失去焦点,第二次点击B得到焦点
    (3)第一次点击使软键盘隐藏并使A失去焦点,第二次点击B得到焦点

    • 在View中的多个TextInput

    a.点击A,A获得焦点
    b.不管软键盘是否隐藏,点击B总能得到焦点,切换快速且流畅

    修改

    在ScrollView文档中,提供了一个属性,如图:

     
    ScrollView属性.png

    所以当ScrollView中有多个TextInput时,使用keyboardShouldPersistTaps={'handled'}就可以解决TextInput焦点切换问题了。

    <View style={{flex: 1, alignItems: 'center'}}>
        <ScrollView
            keyboardShouldPersistTaps={'handled'}
        >
            <TextInput
                style={{ 300, height: 50}}
                value={valueA}
                onChangeText={(val) => this.setState({valueA: val})}
            />
            <TextInput
                style={{ 300, height: 50}}
                value={valueB}
                onChangeText={(val) => this.setState({valueB: val})}
            />
        </ScrollView>
    </View>

    注意:⚠️如果TextInput没有包含在ScrolllView中,那么点击输入框外不会自动隐藏软键盘

     
  • 相关阅读:
    ie用document.getElementsByName获取不到
    js_设置光标到文本的最后位置
    js-转大小写
    mysql查询数据表的路径
    myeclipse导出javadoc时特殊字符 尖括号
    keyCode码集合
    mysql查询数据库约束
    oracle查询每个表的占用空间
    MYSQL复制表
    MacOs上的Intellij idea高频快捷键总结(2018.1版本)
  • 原文地址:https://www.cnblogs.com/itgezhu/p/12737470.html
Copyright © 2011-2022 走看看