如何从UITextView或UITextField获取选定范围的文本

Mrw*_*lfy 12 uitextfield uitextview nsattributedstring ios uitextrange

我试图从UITextView(和/或UITextField)获取选定的文本范围,以便我可以编辑选定的文本,或修改属性字符串.我做出选择时会触发下面的方法,但方法中的代码会返回空值.

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

    UITextRange *selectedRange = [textField selectedTextRange];

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

}
Run Code Online (Sandbox Code Playgroud)

Idu*_*ool 15

你可以试试这个,

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

   UITextRange *selectedRange = [textView selectedTextRange];
   NSString *selectedText = [textView textInRange:selectedRange];
}
Run Code Online (Sandbox Code Playgroud)


Sur*_*gch 5

迅速

首先获取选定的文本范围,然后使用该范围获取实际文本:

if let textRange = myTextView.selectedTextRange {

    let selectedText = myTextView.text(in: textRange)

    // ...
}
Run Code Online (Sandbox Code Playgroud)

笔记:

  • UITextField以相同的方式从 a 中选择文本。
  • 范围是 a UITextRange,而不是NSRange。这允许正确选择表情符号和扩展字素簇等内容。有关此问题的相关详细信息,请参阅此答案