ios – 如何使UITextField可选但不可编辑?

我希望用户可以复制和粘贴文本,但不能编辑它们.我使用委托UITextField方法来实现这个:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range       replacementString:(NSString *)string{
    return NO;
}

这样虽然文本是可选择的而且不可编辑,但是当你选择文本时,键盘总是显示出来,这有点烦人,因为你无法编辑文本.那么无论如何在不显示键盘的情况下使文本可选而不可编辑?

解决方法

您需要的是允许控件接收所有用户交互事件.因此,不要从textFieldShouldBeginEditing返回NO.相反,请执行以下操作:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    return textField != _yourReadOnlyTextField;
}

这将允许用户选择文本,并从弹出菜单中选择剪切,复制和定义等选项.

更新:

此外,为了完整起见,您可能希望防止键盘在现有文本字段上完全显示.因此,根据对此问题的接受答案:uitextfield hide keyboard?,您可能需要添加:

- (void)viewDidLoad
{
    // Prevent keyboard from showing up when editing read-only text field
    _yourReadOnlyTextField.inputView = [[UIView alloc] initWithFrame:CGRectZero];
}

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...