2013-03-26 15 views
11

Próbuję uzyskać wybrany zakres tekstu z UITextView (i lub UITextField), aby edytować wybrany tekst lub zmodyfikować przypisany ciąg. Poniższa metoda jest wyzwalana, gdy dokonuję selekcji, ale kod w metodzie zwraca wartości null.Jak uzyskać zaznaczony zakres tekstu z UITextView lub UITextField

- (void)textViewDidChangeSelection:(UITextView *)textView { 

    UITextRange *selectedRange = [textField selectedTextRange]; 

    NSLog(@"Start: %@ <> End: %@", selectedRange.start, selectedRange.end); 

} 

Odpowiedz

13

Można spróbować,

- (void)textViewDidChangeSelection:(UITextView *)textView { 

    UITextRange *selectedRange = [textView selectedTextRange]; 
    NSString *selectedText = [textView textInRange:selectedRange]; 
} 
2

Swift

Pierwszy dostać wybrany zakres tekstu, a następnie użyć tego zakresu, aby uzyskać rzeczywisty tekst:

if let textRange = myTextView.selectedTextRange { 

    let selectedText = myTextView.text(in: textRange) 

    // ... 
} 

Notatki:

  • Wybór tekstu z UITextField odbywa się w ten sam sposób.
  • Zakres wynosi UITextRange, a nie NSRange. Pozwala to na właściwy dobór rzeczy takich jak emoji i rozbudowane klastry grafem. Zobacz this answer, aby uzyskać dodatkowe informacje na ten temat.
Powiązane problemy