Wie bekommt man einen markierten Textbereich aus einer UITextView oder UITextField
Ich versuche, den ausgewählten Textbereich aus einer UITextView (und oder UITextField), so dass ich Bearbeiten kann der markierte text, oder ändern Sie einen zugeschrieben string. Die unten beschriebene Methode ausgelöst, wenn ich eine Auswahl treffen, aber der code in der Methode null-Werte zurückgibt.
- (void)textViewDidChangeSelection:(UITextView *)textView {
UITextRange *selectedRange = [textField selectedTextRange];
NSLog(@"Start: %@ <> End: %@", selectedRange.start, selectedRange.end);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, diese,
Swift
Zuerst den ausgewählten Bereich, und verwenden Sie dann das Angebot zu bekommen den eigentlichen text:
Hinweise:
UITextField
erfolgt in der gleichen Weise.UITextRange
, nicht einNSRange
. Dies ermöglicht für die richtige Auswahl der Dinge, wie emoji und extended grapheme Cluster. Sehen diese Antwort für weitere Informationen über diese.Swift 4.1
In Ihrem
UITextView
Erweiterung setzen Sie den untenstehenden code in eine Funktion aus, und verwenden Sie, die in Ihrem controller:Sie können diese Methode aufrufen, mit Ihrem textView Instanz in der SelectionDidChange delegate-Methode vom view-Controller. Besser, wickeln Sie diese Funktion aufrufen, mit der Bedingung
textView.selectedRange.length > 0
, um einige text...Können wir nicht verwenden die optionale Bindung zum speichern des ausgewählten Bereichs, statt Sie erklären können, eine optional für nsrange-Typ, dann verwenden Sie die wenn - lassen Sie ... etwas.
TextInputComponent
hat eine Eigenschaft, um den ausgewählten Bereich.Dann können Sie
range.location
,range.length
Werte zu ändern, die Attribute des Textes in den container, etc...Swift 5.0
hier ist, wie ich selecte Dateiname
Panda
ausPanda.txt