设置UITextField为不可编辑或可编辑。

21

我想知道如何禁用UITextField,即我在UITextField的框架中放置了一个UIButton以进行设计目的。

当我点击UITextField中的按钮时,键盘出现了,但是我不想显示键盘!

到目前为止,这是我的代码:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    return textField !=textfiled1;
    return textField !=textfiled2;
}

可能是禁用UITextField的简单方法?的重复问题。 - Apoorv
7个回答

20

您可以使用此属性启用或禁用文本字段上的用户交互:

你可以通过这个属性来启用或禁用文本框上的用户交互:

textField.userInteractionEnabled = NO;

在 Swift 5 中

textField.isUserInteractionEnabled = false

在 Swift 5 中,我使用以下代码:itemTextField.isUserInteractionEnabled = true。 - papesky
@papesky 你的意思是“= false”吧? - Andy Weinstein

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

你也可以使用这个工具


2
这个解决方案更可靠,因为禁用用户交互可能会带来其他问题。 - Karthick Ramesh

1

在Swift 4中被接受的答案:

textField.isUserInteractionEnabled = false

0

我认为你的UIButton不在UITextField上。所以先将其bringToFromView,然后再调用你的UIButton选择器方法。因为编译器会在层次结构中检查Event。如果第一个控件响应事件,则不会寻找下一个。

我已经测试了你的情况,在我的端上运行良好。


0

我 Obj-C 答案的 Swift 版本

   func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
        return false
    }

-1
请使用以下属性。
textField.userInteractionEnabled = NO;

-2

你可以通过以下方式实现这一点: 如果你想禁用编辑,可以这样做 textField.editable = NO;

如果你想再次使其可编辑,可以这样做
textField.editable = YES;


我认为你把UITextViewUITextField搞混了。 - heyfrank

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接