是否有一种简单的方法可以禁用代码中的UITextField
?
我的应用有12 UITextField
默认情况下全部开启,但是当我的细分控制中检测到更改时,我想根据用户选择的细分来禁用部分UITextField
。
只需要知道如何禁用它或使其不可编辑?
由于
答案 0 :(得分:103)
答案 1 :(得分:29)
如果您还想表明文本字段已被禁用,则应添加更多代码:
如果使用UITextBorderStyleRoundedRect,则只能灰显文本:
textField.enabled = NO;
textField.textColor = [UIColor lightGrayColor];
如果使用任何其他样式,您也可以使背景变灰:
textField.enabled = NO;
textField.backgroundColor = [UIColor lightGrayColor];
答案 2 :(得分:11)
当你有多个文本字段时,这将是最简单的:
viewDidLoad中的:(仅为不应编辑的文本字段设置委托。
self.textfield.delegate=self;
并插入此委托函数:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
return NO;
}
多数民众赞成!
答案 3 :(得分:1)
在UIView上制作类别。
在该类别中添加以下方法。
@media only screen and (min-width: 200px) and (max-width: 350px)
{
.button_orange_extended
{
margin-left:0px;
}
} /*Media query for one specific screen width*/
@media only screen and (min-width: 360px) and (max-width: 400px)
{
.button_orange_extended
{
margin-left:30px;
}
} /*Another Media query for specific screen width*/
@media only screen and (min-width: 400px) and (max-width: 450px)
{
.button_orange_extended
{
margin-left:80px;
}
}
然后打电话
-(void)disable {
self.alpha = 0.5;
self.userInteractionEnabled = FALSE;
}
-(void)enable {
self.alpha = 1.0;
self.userInteractionEnabled = TRUE;
}
实际上,您可以在任何您想要的视图上使用它。
答案 4 :(得分:-3)
您应该符合UITextFieldDelegate
并在此方法中返回false
。这样,文本字段仍然可以选择,但它不能用于编辑和剪切
代码在Swift 4中
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return false
}