【问题标题】:Disable Options on React-Native Text Input禁用 React-Native 文本输入的选项
【发布时间】:2017-08-10 13:35:14
【问题描述】:

我正在为一个项目使用 TextInput,并希望禁用任何类型的文本选择或操作,如(剪切/复制/粘贴/共享),如下面的屏幕截图所示。

我在 react-native 官方文档中找不到任何内容

【问题讨论】:

  • 使用只读属性?
  • 如果您想禁用所有操作,如剪切粘贴复制,请使用 caretHidden={true}。它也会隐藏你的光标。

标签: javascript reactjs react-native textinput


【解决方案1】:

您应该添加 2 个属性 selectTextOnFocuseditable

例如:

<TextInput editable={false} selectTextOnFocus={false} />

【讨论】:

  • editable false - 我现在什至无法编辑文本输入 - 当我可以编辑但无法在此文本输入上复制/剪切/粘贴时,我需要这些
  • 当我给出可编辑的错误时,我该如何使用 TextInput。我想禁用复制/粘贴选项,无需给出可编辑={false}
  • 感谢您的回答。它节省了我很多时间和精力。谢谢
  • 感谢您的回复,这是提供的最佳解决方案。
【解决方案2】:

只要给你的文本输入属性editable={false}

【讨论】:

    【解决方案3】:

    contextMenuHidden 是禁止用户将文本粘贴到某些字段并隐藏上下文菜单。

    更新: 这尚未包含在版本中。通过单击link 并查看标签,您始终可以查看任何提交所在的版本。所以我不希望它在 0.55 之前稳定发布。

    <TextInput contextMenuHidden={true} />
    

    在此处检查提交:Add option to hide context menu for TextInput

    【讨论】:

    • 我正在使用 react-native v0.54.0,但无法使用它。
    • @MateoGuzmán 更新了答案。
    • 看起来它是在 55.4 中安装的,但它不适用于 Android。有其他人能够让它在这两个平台上运行吗?
    • 此方法不适用于 Android。您是否找到任何解决方案来阻止 android 中的复制/粘贴选项?
    【解决方案4】:

    TextInput 的父级 View 上将 pointerEvents 设置为 none 以禁用触摸事件,请考虑以下示例:

    <View pointerEvents="none">
      <TextInput ... />
    </View>
    

    【讨论】:

    • 这是边界线link-only answer。您应该在此处扩展您的答案以包含尽可能多的信息,并使用该链接仅供参考。
    • pointerEvent 不是这个场景更好的解决方案,加caretHidden={true}
    • 如果您的文本输入框中已经有光标,则此解决方案将不起作用
    【解决方案5】:

    您可以使用 View 并使用 removeClippedSubviews={true}(适用于 Android)和使用 contextMenuHidden={true}(适用于 IOS)

    <View removeClippedSubviews={true}> <TextInput contextMenuHidden={true} /> </View>

    【讨论】:

      【解决方案6】:

      如果您想禁用剪切粘贴复制等所有操作,请使用 caretHidden={true}。它也会隐藏你的光标

      【讨论】:

      • 选中的 Android - 如果您选择一些文本,所有操作仍会出现
      • 如何在不隐藏光标的情况下做到这一点?
      【解决方案7】:

      这个技巧对我有用。这里我使用的是 NativeBase。将此&lt;TextInput&gt; 保存在&lt;Item&gt; 标记内。现在 selection 属性应该不起作用了。

      下面附上代码示例。

      <Item>
      <Input
        value={this.props.call_state.destination}
        onChangeText={text => this.props.setDestination(text)}
        returnKeyType={"done"}
        keyboardType={"numeric"}
      />
      </Item>
      

      您应该先安装 nativebase,然后在组件中从 native-base 导入 {Item}

      【讨论】:

      • 这可能是由于 nativebase 中的错误,因为您应该能够默认选择/复制/粘贴文本输入。
      猜你喜欢
      • 1970-01-01
      • 2021-02-09
      • 2020-03-15
      • 2016-12-21
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 2016-12-01
      • 2019-06-03
      相关资源
      最近更新 更多