【问题标题】:Disable editing only for UITextField?仅对 UITextField 禁用编辑?
【发布时间】:2014-10-24 06:10:17
【问题描述】:

我尝试了以下方法:

  • 属性enabled 和“启用用户交互”;

  • 方法textFieldShouldBeginEditing:

但他们禁用了文本字段的所有可能操作。我只需要禁用编辑,但允许用户复制文本值。如何实现?

【问题讨论】:

    标签: ios copy uitextfield editing isenabled


    【解决方案1】:

    这可能对您有所帮助。试试

    YourTextField.editing = NO;
    

    【讨论】:

      【解决方案2】:

      除了tasuhka的回应,请确保 YourTextField.selectable = YES;

      【讨论】:

        【解决方案3】:

        实现并设置以下UITextFieldDelegate:

        - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
        {
            return NO;
        }
        

        这使得该字段不可编辑,同时仍保留该选择/复制功能。 editing 属性是只读且不相关的。

        【讨论】:

          【解决方案4】:

          保持启用的属性和用户交互。否则您将无法选择文本。

          将 UITextField 的委托设置为 ViewController 并实现:

          斯威夫特:

          func textField(_ textField: UITextField,
                             shouldChangeCharactersIn range: NSRange,
                             replacementString string: String) -> Bool {
                  return false
              }
          

          【讨论】: