有没有一种简单的方法来禁用UITextField
代码?
我的应用程序有 12 个UITextField
默认情况下都打开,但是当在我的 Segment Control 中检测到更改时,我想UITextField
根据用户选择的 Segment 禁用一些。
只需要知道如何禁用它或使其不可编辑?
谢谢
有没有一种简单的方法来禁用UITextField
代码?
我的应用程序有 12 个UITextField
默认情况下都打开,但是当在我的 Segment Control 中检测到更改时,我想UITextField
根据用户选择的 Segment 禁用一些。
只需要知道如何禁用它或使其不可编辑?
谢谢
如果您还想指示文本字段已禁用,则应添加更多代码:
如果使用 UITextBorderStyleRoundedRect,则只能将文本变灰:
textField.enabled = NO;
textField.textColor = [UIColor lightGrayColor];
如果使用任何其他样式,您也可以将背景变灰:
textField.enabled = NO;
textField.backgroundColor = [UIColor lightGrayColor];
当您也有多个文本字段时,这将是最简单的:
在 viewDidLoad:( 仅为不应编辑的文本字段设置委托。
self.textfield.delegate=self;
并插入这个委托函数:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
return NO;
}
就是这样!
在 UIView 上创建类别。
在该类别中添加以下方法。
-(void)disable {
self.alpha = 0.5;
self.userInteractionEnabled = FALSE;
}
-(void)enable {
self.alpha = 1.0;
self.userInteractionEnabled = TRUE;
}
然后打电话
yourTextField.disable();
实际上,您可以在任何您想要的视图上使用它。
您应该遵守UITextFieldDelegate
并返回false
此方法。这样文本字段仍然可以选择,但不可编辑和剪切
代码在 Swift 4 中
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return false
}