当用户点击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 = ...
行时连按两次或长按才调用它。但是,如果我注释这一行,则每次我进入文本字段时都会执行print语句。
答案 0 :(得分:0)
我这样修复:
self.textField.resignFirstResponder()
self.textField.selectedTextRange = nil