UITextField和UITextView使用UITextInput协议来管理选择导致崩溃



UITextField和UITextView都采用UITextInput协议。UITextView的selecterange属性返回NSRange,其中UITextField没有任何选择属性/方法。我想使用一个例程来管理插入在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属性上使用'unrecognized selector sent to instance'导致崩溃。

我做错了什么?

[编辑:似乎在iOS 5中工作,但在iOS 4的设备上崩溃。]这是iOS 5的变化吗?

我在自己的应用程序中验证了UITextView和UITextField在iOS 4模拟器中与-[UITextView selectedTextRange]: unrecognized selector一起崩溃,而不是iOS 5模拟器。

这个问题的答案表明,对UITextInput的一致性是iOS 5中的一个新事物:我可以在UITextField中选择特定的文本块吗?。协议本身似乎是iOS 3.2,但UITextView/Field在iOS 5之前没有使用那个协议

@Absinthe的编辑是正确的。UITextField直到iOS 5才开始遵循UITextInput协议

最新更新