我试图在用户点击 UITextField 时突出显示文本。当我第一次进入该领域时,该行为按预期工作。一旦我退出(退出第一响应者)然后返回,除非我双击或长按文本字段,否则文本字段不会重新获得焦点。
这是我的代码。
override func viewDidLoad() {
textField.delegate = self
// tap gesture to resign first responder
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard(gestureRecognizer:)))
self.view.addGestureRecognizer(tapGesture)
}
@objc func dismissKeyboard(gestureRecognizer: UITapGestureRecognizer) {
textField.resignFirstResponder()
}
func textFieldDidBeginEditing(_ textField: UITextField) {
// if I comment out this line or replace with a print statement, the text field regains focus on a single tap as expected
textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument)
}
如果我删除 textFieldDidBeginEditing
中负责选择所有文本的代码,文本字段会在单击时成功重新获得焦点(但显然不会突出显示文本)。
我尝试在 textFieldDidBeginEditing
中放置一个打印语句,直到 textField.selectedRange = ...
时双击或长按才调用它线存在。但是,如果我注释掉这一行,那么每次我点击文本字段时都会执行打印语句。
最佳答案
我是这样修复的:
self.textField.resignFirstResponder()
self.textField.selectedTextRange = nil
关于ios - UITextField 不响应点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57501401/