我想在用户点击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 = ...
行存在时,它不会被调用,直到双击或长按。 然而,如果我注释掉此行,则每次我点击文本字段时都会执行打印语句。
DispatchQueue
块中,但没有用 - ntaj