2013-03-26 36 views
11

UITextView(および/またはUITextField)から選択したテキスト範囲を取得して、選択したテキストを編集したり、属性付きの文字列を変更したりしようとしています。以下のメソッドは、選択するとトリガされますが、メソッドのコードはnull値を返します。あなたはこれを試すことができUITextViewまたはUITextFieldから選択したテキスト範囲を取得する方法

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

    UITextRange *selectedRange = [textField selectedTextRange]; 

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

} 

答えて

13

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

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

スウィフト

まず選択したテキスト範囲を取得し、その後、実際のテキストを取得し、その範囲を使用します。

if let textRange = myTextView.selectedTextRange { 

    let selectedText = myTextView.text(in: textRange) 

    // ... 
} 

注:

  • UITextFieldからのテキストの選択も同じ方法で行われます。
  • 範囲はUITextRangeであり、NSRangeではありません。これにより、絵文字や拡張された書記素クラスタなどの適切な選択が可能になります。これに関する詳細は、this answerを参照してください。
関連する問題