46

有没有一种简单的方法来禁用UITextField代码?

我的应用程序有 12 个UITextField默认情况下都打开,但是当在我的 Segment Control 中检测到更改时,我想UITextField根据用户选择的 Segment 禁用一些。

只需要知道如何禁用它或使其不可编辑?

谢谢

4

5 回答 5

112

在 Objective-C 中:

textField.enabled = NO;

在斯威夫特:

textField.isEnabled = false

参考:UIControl.isEnabled

于 2009-03-01T12:31:06.573 回答
30

如果您还想指示文本字段已禁用,则应添加更多代码:

如果使用 UITextBorderStyleRoundedRect,则只能将文本变灰:

textField.enabled = NO;
textField.textColor = [UIColor lightGrayColor];

如果使用任何其他样式,您也可以将背景变灰:

textField.enabled = NO;
textField.backgroundColor = [UIColor lightGrayColor];
于 2012-05-01T08:56:51.447 回答
12

当您也有多个文本字段时,这将是最简单的:

在 viewDidLoad:( 仅为不应编辑的文本字段设置委托。

self.textfield.delegate=self;

并插入这个委托函数:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
return NO;
}

就是这样!

于 2013-07-08T17:40:41.803 回答
2

在 UIView 上创建类别。

在该类别中添加以下方法。

-(void)disable {
    self.alpha = 0.5;
    self.userInteractionEnabled = FALSE;
}

-(void)enable {
    self.alpha = 1.0;
    self.userInteractionEnabled = TRUE;
}

然后打电话

yourTextField.disable();

实际上,您可以在任何您想要的视图上使用它。

于 2016-09-02T06:51:43.637 回答
-1

您应该遵守UITextFieldDelegate并返回false此方法。这样文本字段仍然可以选择,但不可编辑和剪切

代码在 Swift 4 中

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
  return false
}
于 2018-05-18T12:40:18.337 回答