2

我一直在使用 UITextInput 协议中的 selectedTextRange 和 beginOfDocument 属性,但正如我刚刚在下面的帖子中了解到的那样,UITextField 仅开始遵守 iOS 5 中的 UITextInput 协议,因此我的应用程序在 iOS 4.3 中崩溃。我需要另一种方法在 iOS 4.3 中执行此操作。

UITextField 和 UITextView 的 UITextInput 协议用于管理崩溃中的选择结果

这是我现在正在做的事情(self 是我的 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);
4

1 回答 1

1

假设用户在 UITextField 中选择了一些文本。如果它的 iOS 4 在“选择并复制”字段下方添加了一个标记行,那么您可以从剪贴板中获取文本(但不确定是否可以在剪贴板更改时收到通知)。

或者,您甚至可以让他们点击某个键 - 甚至是删除键,在文本委托方法“shouldChangeCharactersInRange:”中,您可以获得范围,然后返回 NO 以免更改它。

于 2012-08-08T16:27:03.723 回答