当前位置 : 主页 > 手机开发 > ios >

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

来源:互联网 收集:自由互联 发布时间:2021-06-11
UITextField和UITextView都采用UITextInput协议. UITextView的selectedRange属性返回NSRange,其中UITextField没有任何选择属性/方法.我想使用一个例程来管理UITextField或UITextView中的插入. 所以我做了以下事
UITextField和UITextView都采用UITextInput协议. UITextView的selectedRange属性返回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属性上立即崩溃“无法识别的选择器发送到实例”.

我究竟做错了什么?

[编辑:似乎在iOS 5中工作,但在iOS 4中的设备上崩溃.这是iOS 5中的变化吗?文件说协议是3.2.]

我在自己的应用程序中验证了UITextView和UITextField都崩溃了 – [UITextView selectedTextRange]:iOS 4模拟器中无法识别的选择器,但不是iOS 5模拟器.

这个问题的答案表明,与UITextInput的一致性是iOS 5:Can I select a specific block of text in a UITextField?中的新功能.因此,协议本身似乎是iOS 3.2,但UITextView / Field在iOS 5之前没有使用该协议.

网友评论