React Native TextInput focus时,第一次点击 ScrollView 无效解决办法

问题:TextInput focus时,第一次点击 ScrollView 无效,第二次正常

代码如下(FlatList 继承于ScrollView,以FlatList为例演示):

          <TextInput
              placeholder='test'
              value={this.state.inputText}
              onChangeText={(inputText) => this.setState({inputText})}
              style={{marginBottom: 20, fontSize: 17, width: 300, textAlign: 'center'}}
          />
          <FlatList
              data={[{key: 'item 1'}, {key: 'item 2'}]}
              renderItem={({item}) =>
                  <TouchableHighlight onPress={() =>
                  {
                      console.log('item press');
                  }}
                                      underlayColor='#dddddd'>
                      <View style={{height: 40}}>
                          <Text style={{fontSize: 16, textAlign: 'center'}}>{item.key}</Text>
                      </View>
                  </TouchableHighlight>
             }
          />
image.png

在 TextInput 输入任意字符,第一次点击‘item 1’或者‘item 2’,控制台没有console;第二次才会有。

解决办法

在FlatList 添加keyboardShouldPersistTaps={'handled'}, 并且在 <TouchableHighlight> onPress 方法内 添加 Keyboard.dismiss()

FlatList 如下:

<FlatList
              keyboardShouldPersistTaps={'handled'}
              data={[{key: 'item 1'}, {key: 'item 2'}]}
              renderItem={({item}) =>
                  <TouchableHighlight onPress={() =>
                  {
                      console.log('item press');
                      Keyboard.dismiss();
                  }}
                                      underlayColor='#dddddd'>
                      <View style={{height: 40}}>
                          <Text style={{fontSize: 16, textAlign: 'center'}}>{item.key}</Text>
                      </View>
                  </TouchableHighlight>
             }
          />

结论

解决办法适用于ScrollView,FlatList,SectionList

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容