首页 > 解决方案 > 禁用 TextField 用户交互,但在触摸时显示错误视图

问题描述

我有一个 UITextField,在我的 ViewController 的代码中,它的设置取决于它的值

textField.isUserInteractionEnabled = false

或者

textField.isUserInteractionEnabled = true

现在,当用户交互被禁用时,我希望它仍然对触摸做出反应并显示错误消息(例如取消隐藏另一个视图),告诉用户无法编辑此文本字段。

我怎样才能以最精简的方式实现这一目标?这个解决方案在这里(https://stackoverflow.com/a/9117285)建议不要禁用用户交互,但拒绝内容更改 - 这是我不想要的(键盘不应该出现 - 它不会出现当用户交互被禁用时,但我也无法对触摸做出反应)。

标签: swiftuitextfield

解决方案


而不是使用isUserInteractionEnabled你可以实现你自己的isDisabledBool 和UITextFieldDelegate并实现func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool. 当 isDisabled 为 true 时显示错误视图并返回 false,否则返回 true。在 isDisabled 的 didSet 中,您可以隐藏错误视图。

从此方法返回 false 应该会阻止键盘弹出,并且仍然允许您与视图进行交互。


推荐阅读