13

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

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

    UITextRange *selectedRange = [textField selectedTextRange];

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

}
4

4 に答える 4

16

あなたはこれを試すことができます、

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

   UITextRange *selectedRange = [textView selectedTextRange];
   NSString *selectedText = [textView textInRange:selectedRange];
}
于 2013-08-12T07:14:14.490 に答える
7

迅速

最初に選択したテキスト範囲を取得し、次にその範囲を使用して実際のテキストを取得します。

if let textRange = myTextView.selectedTextRange {

    let selectedText = myTextView.text(in: textRange)

    // ...
}

ノート:

  • a からのテキストの選択UITextFieldも同じ方法で行われます。
  • 範囲はUITextRangeではなくNSRangeです。これにより、絵文字や拡張書記素クラスターなどを適切に選択できます。これに関する詳細については、この回答を参照してください。
于 2016-06-08T02:37:31.663 に答える