2013-03-26 106 views
11

我想从UITextView(和/或UITextField)中获取所选文本范围,以便我可以编辑所选文本或修改属性字符串。当我做出选择时触发下面的方法,但方法中的代码返回空值。如何从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
相关问题