【问题标题】:TouchableOpacity as Item in ListView only reacts after TextInput has lost focusTouchableOpacity 作为 ListView 中的 Item 仅在 TextInput 失去焦点后做出反应
【发布时间】:2016-03-21 08:03:42
【问题描述】:

我现在正在开发一个由 TextInput 和 ListView 组成的搜索组件。它从外部服务器加载结果并相应地填充 ListView。

还有一个 TouchableOpacity 可以关闭搜索组件。

不幸的是,需要两次按下才能调用 TouchableOpacity 的 onPress 回调——一次让 TextInput 失去焦点,一次触发回调。 但是,如果我按下 TouchableOpacity 关闭搜索组件,或者如果我按下“react-native-scrollable-tab-view”组件的选项卡之一,它会立即做出反应,TextInput 甚至会保持焦点。

所以,我想知道是否有人知道 ListView 是否由于其滚动功能而以某种方式消耗了触摸。

【问题讨论】:

    标签: react-native scrollview textinput


    【解决方案1】:

    ScrollView(和旧版 ListView)组件有一个 prop keyboardShouldPersistTaps,它采用三个选项:

    • never(默认),当键盘向上时,在焦点文本输入之外点击会关闭键盘。发生这种情况时,孩子们不会收到点击。
    • always,键盘不会自动关闭,滚动视图不会捕捉点击,但滚动视图的子视图可以捕捉点击。
    • handled,当孩子处理敲击(或被祖先捕获)时,键盘不会自动关闭。

    示例

    <ScrollView keyboardShouldPersistTaps="always">
      // Your TextInput and Button here…
    </ScrollView>
    

    我将此属性设置为 true,它按预期工作。 =)

    【讨论】:

    • 不起作用。每当文本输入和按钮位于滚动视图内时 - 在文本输入中输入值后,您需要按两次按钮才能使其工作。一个用于失去对 textInput 的关注,第二个用于按钮工作。还有其他解决方案吗?
    • 对不起。也适用于滚动视图。我在子组件的 scrollView 中应用了这个属性。当我应用到父组件时,它开始工作了。
    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2018-08-07
    • 2018-11-08
    相关资源
    最近更新 更多