用于UITextField和UITextView的UITextInput协议用法来pipe理崩溃时的select结果

UITextField和UITextView都采用UITextInput协议。 UITextView的selectedRange属性返回NSRange,其中UITextField没有任何select属性/方法。 我想使用一个例程来pipe理UITextField或UITextView的插入。

所以我做了以下几点:

id<UITextInput> textInput = nil; if ([self.aTextView isFirstResponder]) { textInput = self.aTextView; } else if ([self.aTextField isFirstResponder]) { textInput = self.aTextField; } if (textInput != nil) { UITextRange * selectedRange = textInput.selectedTextRange; // ... } 

只有在selectedTextRange属性中,“发送到实例的无法识别的select器”会立即崩溃。

我究竟做错了什么?

[编辑:似乎在iOS 5中工作,但在iOS 4设备上崩溃。这是iOS 5中的更改吗? 文档说协议是3.2+。]

我在我自己的应用程序validationUITextView和UITextField都崩溃了-[UITextView selectedTextRange]: unrecognized selector在iOS 4模拟器,但不是iOS 5模拟器。

这个问题的答案表明,符合UITextInput是iOS 5中的新事物: 我可以在UITextField中select特定的文本块吗? 。 所以看起来协议本身是iOS 3.2,但UITextView / Field在iOS 5之前没有使用该协议。

@苦艾酒的编辑是正确的。 在iOS 5之前, UITextField没有启动跟随UITextInput协议。