2012-08-08 56 views
2

我一直在使用UITextInput協議中的selectedTextRange和beginningOfDocument屬性來做它,但正如我在下面的帖子中所學到的,UITextField只開始遵守UITextInput協議在iOS 5中,所以我的應用在iOS 4.3中崩潰。我需要另一種方式在iOS 4.3中執行此操作。獲取UITextField中所選文本的範圍,因爲NSRange是iOS 4

UITextInput protocol usage for UITextField and UITextView to manage selection results in crash

這裏是我現在正在做什麼(自我是我的UITextField子類):

UITextRange *selectedTextRange = self.selectedTextRange; 
NSUInteger location = [self offsetFromPosition:self.beginningOfDocument 
             toPosition:selectedTextRange.start]; 
NSUInteger length = [self offsetFromPosition:selectedTextRange.start 
             toPosition:selectedTextRange.end]; 
NSRange selectedRange = NSMakeRange(location, length); 

回答

1

假設用戶已經選擇了的UITextField一些文本。如果它的iOS 4在標記爲「選擇並複製」的字段下面添加標記行,那麼您可以從剪貼板中獲取文本(不確定是否可以在剪貼板更改時收到通知)。或者,甚至可以讓他們點擊某個鍵 - 即使是刪除鍵,並在文本委託方法「shouldChangeCharactersInRange:」中,您可以獲取範圍,然後返回NO以便不更改它。

+0

感謝您的回答!實際上,我們最終關閉了iOS 4.3的功能。這原來是最乾淨的解決方案。 – 2012-08-09 19:46:13

相關問題