2013-03-26 98 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
相關問題