swift - 禁用 TextField 用户交互,但在触摸时显示错误视图
问题描述
我有一个 UITextField,在我的 ViewController 的代码中,它的设置取决于它的值
textField.isUserInteractionEnabled = false
或者
textField.isUserInteractionEnabled = true
现在,当用户交互被禁用时,我希望它仍然对触摸做出反应并显示错误消息(例如取消隐藏另一个视图),告诉用户无法编辑此文本字段。
我怎样才能以最精简的方式实现这一目标?这个解决方案在这里(https://stackoverflow.com/a/9117285)建议不要禁用用户交互,但拒绝内容更改 - 这是我不想要的(键盘不应该出现 - 它不会出现当用户交互被禁用时,但我也无法对触摸做出反应)。
解决方案
而不是使用isUserInteractionEnabled
你可以实现你自己的isDisabled
Bool 和UITextFieldDelegate
并实现func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool
. 当 isDisabled 为 true 时显示错误视图并返回 false,否则返回 true。在 isDisabled 的 didSet 中,您可以隐藏错误视图。
从此方法返回 false 应该会阻止键盘弹出,并且仍然允许您与视图进行交互。
推荐阅读
- c++ - findChild 没有找到刚刚添加到 QMenuBar 的菜单
- dask - 是为控制流“计算”还是构建一个完全“延迟”的任务图更好?
- python - 如何删除出现在我的 python 输出中的空行?
- javascript - 如何覆盖 npm 包的 package.json
- asp.net-core - IIS 按顺序重新启动 Web API
- c++ - 如何检查两个双精度数的除法是否为整数?
- javascript - 当我调用 get Api angular 8 时,我无法在 formArray 中动态创建一个 formArray
- java - 覆盖 docker 容器中的 Spring Boot 属性
- json - 如何解组不同的json格式
- c++ - 快速排序(使用 pthreads)仅对数组的一半进行排序