Deaktivieren Sie die Optionen für die React-Native-Texteingabe

Lesezeit: 3 Minuten

Ich verwende TextInput für ein Projekt und wollte jede Art von Textauswahl oder Aktionen wie (Ausschneiden/Kopieren/Einfügen/Teilen) deaktivieren, wie im Screenshot unten gezeigt.

Ich kann in der offiziellen React-Native-Dokumentation nichts finden

Geben Sie hier eine Bildbeschreibung ein

  • schreibgeschütztes Attribut verwenden?

    – mehulmpt

    19. März 2017 um 7:10 Uhr

  • Verwenden Sie caretHidden={true}, wenn Sie alle Vorgänge wie Ausschneiden, Einfügen, Kopieren deaktivieren möchten. Dadurch wird auch Ihr Cursor ausgeblendet.

    – Anil Chahal

    22. Januar 2018 um 7:42 Uhr

Sie sollten zwei Attribute hinzufügen
selectTextOnFocus Und editable

Zum Beispiel:

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

  • editable false – ich kann die Texteingabe jetzt nicht einmal bearbeiten – ich benötige diese, wenn ich diese Texteingabe bearbeiten, aber nicht kopieren/ausschneiden/einfügen kann

    – firebolt_ash

    20. März 2017 um 6:41

  • Wie kann ich TextInput verwenden, wenn ich „editable false“ gebe? Ich möchte, dass die Kopier-/Einfügeoption deaktiviert wird, ohne dass editable={false} angegeben werden muss.

    – saiRam89

    21. Juli 2017 um 9:29

Geben Sie Ihrer Texteingabe einfach das Attribut editable={false}

Benutzeravatar von Balasubramanian
Balasubramanisch

contextMenuHidden besteht darin, den Benutzer am Einfügen von Text in bestimmte Felder zu hindern und das Kontextmenü auszublenden.

Aktualisieren:
Dies wurde noch nicht in eine Veröffentlichung aufgenommen. Sie können jederzeit sehen, in welcher Version sich ein Commit befindet, indem Sie auf klicken Verknüpfung und schauen Sie sich die Tags an. Daher würde ich nicht erwarten, dass es vor 0.55 eine stabile Version gibt.

<TextInput contextMenuHidden={true} />

Überprüfen Sie das Commit hier: Option zum Ausblenden des Kontextmenüs für TextInput hinzufügen

  • Ich verwende React-Native v0.54.0 und konnte es damit nicht zum Laufen bringen.

    – Mateo Guzmán

    23. März 2018 um 16:32 Uhr

  • @MateoGuzmán hat die Antwort aktualisiert.

    – Balasubramanian

    24. März 2018 um 7:04

  • Sieht so aus, als ob es in 55.4 installiert wurde, aber es funktioniert nicht für Android. Kann das noch jemand auf beiden Plattformen zum Laufen bringen?

    – Rübenrüben

    1. Juni 2018 um 20:29

  • Diese Methode funktioniert nicht auf Android. Haben Sie eine Lösung gefunden, um die Option „Kopieren/Einfügen“ in Android zu verhindern?

    – M. Kalidass

    7. Januar 2022 um 6:09

Shines Benutzeravatar
Scheinen

Satz Zeigerereignisse zu keiner auf Eltern View von TextInput Betrachten Sie zum Deaktivieren von Berührungsereignissen das folgende Beispiel:

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

Benutzeravatar von linhadiretalipe
linhadiretalipe

Sie können eine Ansicht verwenden und „removeClippedSubviews={true}“ verwenden (funktioniert mit Android) und contextMenuHidden={true} verwenden (funktioniert mit IOS).

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

Referenz aus der folgenden Ausgabe
https://github.com/facebook/react-native/issues/33697

const App = () => {
  const [selection, setSelection] = useState(null);
  const [text, setText] = useState('');

  return (
    <TextInput 
      selection={selection}
      onSelectionChange={(e) => setSelection(e.nativeEvent.selection)}
      value={text}
      onChangeText={(text) => setText(text)}
      style={{ alignSelf: 'center', width: 200, marginTop: 50, backgroundColor: 'grey' }} 
    />
  );
};

Die folgende Lösung funktioniert für mich, um das Kopieren/Einfügen zu vermeiden. Ich lösche die Tastatur beim onTouchEnd-Ereignis

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>

1453670cookie-checkDeaktivieren Sie die Optionen für die React-Native-Texteingabe

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy