我一直在使用UITextInput协议中的selectedTextRange和BeginningOfDocument属性来执行此操作,但是正如我在下面的帖子中所了解的那样,UITextField仅在iOS 5中才开始遵守UITextInput协议,因此我的应用在iOS 4.3中崩溃了。我需要在iOS 4.3中执行此操作的另一种方法。
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);
最佳答案
假设用户在UITextField中选择了一些文本。如果其iOS 4在标有“选择并复制”的字段下方添加标记行,则可以从剪贴板中获取文本(但是不确定剪贴板更改时是否会收到通知)。
或者,甚至可以让他们点击某个键-甚至是删除键,然后在文本委托方法“shouldChangeCharactersInRange:”中,可以获取范围,然后返回NO以免更改。