我有一个UITextField,并在ViewController的代码中根据它的值进行设置
textField.isUserInteractionEnabled = false
或
textField.isUserInteractionEnabled = true
现在,当用户交互被禁用时,我希望它仍然对触摸做出反应并显示错误消息(例如取消隐藏其他视图),该错误消息告诉用户无法编辑此文本字段。
如何以最精益的方式实现这一目标?此解决方案(https://stackoverflow.com/a/9117285)建议不要禁用用户交互,但拒绝内容更改-这是我不希望的(键盘不应该显示-禁用用户交互时不会显示,但我也无法对触摸做出反应。
答案 0 :(得分:0)
您需要在禁用文本字段的情况下添加一个视图以显示适当的消息的手势,或者执行此操作
NotificationCenter.default.addObserver(self, selector: #selector(keyShow), name:UIResponder.keyboardWillShowNotification, object: nil)
}
@objc func keyShow ( _ not:NSNotification) {
if shouldHideKeyB {
self.view.endEditing(true)
// show disabled message
}
}
其中shouldHideKeyB
是文本字段的当前状态
答案 1 :(得分:0)
代替使用isUserInteractionEnabled
,您可以实现自己的isDisabled
Bool和UITextFieldDelegate
并实现func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool
。当isDisabled为true时,显示错误视图并返回false,否则返回true。在isDisabled的didSet中,您可以隐藏错误视图。
从此方法返回false会阻止键盘弹出,并且仍然允许您与视图进行交互。