我在iOS 6中測試了這個方案,並有完全相同的結果:「選擇」彈出窗口中的屬性更改未觸發方法textViewDidChange:
。看起來這是一個錯誤或文檔需要澄清哪種屬性更改會觸發此事件。
可能的解決方法是實現textViewDidChangeSelection:
方法。無論何時做出選擇(用戶在更改屬性之前必須執行的操作),都會調用它。檢查selectedRange.length是否> 0(這意味着選擇了實際的單詞,而不是僅僅移動光標),並保存該選定的範圍。一旦長度再次爲零,這意味着他們取消選擇該項目。那時,你可以採取以前的範圍和文本工作。
- (void)textViewDidChangeSelection:(UITextView *)textView
{
static BOOL rangeSet = NO;
static NSRange mySelectedRange;
if(textView.selectedRange.length > 0 && !rangeSet)
{
mySelectedRange = textView.selectedRange;
rangeSet = YES;
}
else if(textView.selectedRange.length == 0 && rangeSet)
{
// Work with text
NSLog(@"Working with previously select text: %d, %d", mySelectedRange.location, mySelectedRange.length);
}
}
您正在設置UITextViewDelegate ... –
不知道你在說什麼,Venkat。 – stevex