ios - UITextField 和 UITextView 的 UITextInput 协议(protocol)使用来管理崩溃时的选择结果

标签 ios uitextfield uitextview uitextinput

UITextField和UITextView都采用了UITextInput协议(protocol)。 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 中的更改吗?文档说协议(protocol)是 3.2+。]

最佳答案

我在自己的应用程序中验证了 UITextView 和 UITextField 都因 -[UITextView selectedTextRange]: unrecognized selector 而在 iOS 4 模拟器中崩溃,但在 iOS 5 模拟器中没有。

这个问题的答案表明与 UITextInput 的一致性是 iOS 5 中的新事物:Can I select a specific block of text in a UITextField? .所以看起来协议(protocol)本身是 iOS 3.2,但 UITextView/Field 在 iOS 5 之前没有使用该协议(protocol)。

关于ios - UITextField 和 UITextView 的 UITextInput 协议(protocol)使用来管理崩溃时的选择结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7923659/

相关文章:

iOS:以编程方式将 Segue 推送到多个 View Controller

ios - 对话框 'apprequests' 好友邀请发送成功,但从未接通。 (iOS)

ios - UITextField shouldChangeCharactersInRange 触发两次?

objective-c - 拉动以显示 iOS 中隐藏的类似导航栏的菜单?如 GetPocket App 中所示

ios - SWIFT:在 uiscrollview 中无法按下按钮

iphone - 如何成为从一个 UITextView 到另一个 UITextView 的响应者?

ios - 防止 SwiftUI NavigationLink 继承重写的 preferredColorScheme

ios - 向下滚动时事件指示器 View 消失

objective-c - 如何重新创建 iMessage 发送按钮和文本字段布局?

ios - 无法动态删除 UITextField 的边框