如何在视图中点击提交按钮而不必先关闭键盘?

Posted

技术标签:

【中文标题】如何在视图中点击提交按钮而不必先关闭键盘?【英文标题】:How to tap on a submit button in the view without having to dismiss a keyboard first? 【发布时间】:2018-06-27 08:51:07 【问题描述】:

我正在使用 react native 来实现社区提要。在提要中的每个帖子中,我都可以发表评论,如下所示。

但是,问题是在我输入评论并想按右侧的提交图标后,键盘会先关闭,然后我才能点击图标提交文本。

问题: 如何在按下提交图标后立即提交我的文本而不点击两次(一次关闭键盘,第二次提交)

这是我的实现的 sn-p: //cmets部分/框的代码

<View style=styles.commentSectionContainer>
    <View style=[textInputStyle.dark, textInputStyle.compact]>
      <LocalizedTextInput
        multiline=false
        autoCorrect=true
        onChangeText=onCommentTextChange
        placeholder="placeholder/writeComment"
        style=[textInputStyle.default, fontSize: 13]
        underlineColorandroid="transparent"
        value=textComment
        onSubmitEditing=() => 
          if (textComment) 
            onSubmitComment();
          
        
        returnKeyType="send"
     />
     <View style=styles.iconSubmitContainer>
      <IconButton style=styles.commentSubmit iconName="send" isDisabled=textComment === '' onPress=onSubmitComment hitSlop=hitSlop />
    </View>
  </View>
</View>

本地化文本输入使用以下文本输入

<View style=flex: 1>
  <TextInput
    multiline=multiline
    style=[defaultStyle, flex: 1]
    underlineColorAndroid="transparent"
    autoCorrect=true
    ...otherProps
  />
</View>

所有帖子都包裹在一个滚动视图中。

我尝试使用“keyboardShouldPersistTaps”和keyboardDismissMode="Drag-on",但它没有产生预期的体验。用户应该能够通过点击文本输入框外的任何地方来关闭键盘,而不是要求滚动.

【问题讨论】:

你在哪里添加了“keyboardShouldPersistTaps”。是否有任何滚动视图组件在其中呈现此组件。我们应该在滚动视图中添加“keyboardShouldPersistTaps”。 【参考方案1】:

如果您的父级是 ScrollView 组件,那么传递 keyboardShouldPersistTaps="always" 属性应该可以解决问题。见官方文档here。

【讨论】:

【参考方案2】:

正如 Ankit 所建议的,需要将 prop 传递给滚动视图,但如果这不能为您提供所需的结果,TextInput 有一个 blur() 方法,您可以使用该 TextInput 的 ref 调用该方法。也许这会有所帮助。

【讨论】:

以上是关于如何在视图中点击提交按钮而不必先关闭键盘?的主要内容,如果未能解决你的问题,请参考以下文章

ios上有时候提交按钮点击两次才可以取消输入框软键盘

React Native 如何防止键盘在文本提交时关闭?

提交按钮后如何重新加载谷歌recaptcha而不刷新页面? [复制]

如何在按钮当前标题上设置验证

当软键盘可见时,无法单击按钮

Iphone:点击/点击“开始”按钮后,虚拟键盘不会隐藏