微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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];
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐