如何防止复制到剪贴板中的TextInput react-native在Android上?

dy1byipe  于 2023-03-03  发布在  React
关注(0)|答案(5)|浏览(243)

我想阻止用户复制TextInput中的内容,但它只适用于iOS,而不适用于Android。我该如何在Android上做到这一点?
[更新]:正如link@patel-dhara在下面给出的,我已经阅读了关于contextMenuHidden属性的提交,发现它只处理Android上的 * onLongClick * 事件。因此,仍然可以通过双击它在TextInput上执行copy to clipboard

    • 以下是我的代码:**
<TextInput
  style={styles.input}
  placeholder="Password"
  placeholderTextColor="rgba(255, 255, 255, 0.7)"
  underlineColorAndroid="transparent"
  secureTextEntry={isHidePass}
  returnKeyType="go"
  autoCapitalize="none"
  onChangeText={this.handleTextChange}
  onSubmitEditing={this.handleLogin}
  ref={this.passwordRef}
  contextMenuHidden
  onBlur={() => Clipboard.setString('')}
  onFocus={() => Clipboard.setString('')}
  onSelectionChange={() => Clipboard.setString('')}
/>
epggiuax

epggiuax1#

您可以使用TextInput的contextMenuHidden属性。它将在Android和iOS平台上工作。

<TextInput contextMenuHidden={true} />

但是,它可能是react-native版本0.55后支持.更多信息link.提交链接:link

j8yoct9x

j8yoct9x2#

试试这个:

<TextInput caretHidden={true} selectTextOnFocus={false} />
0pizxfdo

0pizxfdo3#

使用此:

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

checkout 视图的指针事件:www.example.comhttps://facebook.github.io/react-native/docs/view#pointerevents
另一种选择:尝试清除剪贴板

<TextInput onFocus={() => Clipboard.setString('')} onSelectionChange={() => Clipboard.setString('')}/>
f87krz0w

f87krz0w4#

如果你想避免粘贴下面的解决方案为我工作。我正在清除键盘上的onTouchEnd事件

const [text1, setText1] = useState('')
    
const clearClipboard = () =>{
 Clipboard.setString('')
}
    
const onChangeText = (text) =>{
 //For android 12+ clipboard autofill option, dont allow text change more than one char..which means user is typing.
 if(text1.length+1 >= text.length){
  setText1(text)
 }
}
    
<TextInput onChangeText={onChangeText} value={text1} contextMenuHidden={true} onTouchEnd={clearClipboard}></TextInput>
tkclm6bt

tkclm6bt5#

我发现解决这个问题的方法是从TextInput使用onFocus来清除剪贴板,这样我就不需要阻止用户粘贴,因为即使他这样做剪贴板也是空的。
您可以对onBlur执行相同的操作,以防止复制的内容被粘贴。

<InputCustom
                     onFocus={() => {                          
                        Clipboard.setString('');
                      }}           
                     onBlur={() => {
                        Clipboard.setString('');
                      }}                         
                    />

相关问题