显示计时器选择器时出现问题。有两个文本字段:1.第一个打开数字键盘。 2.秒从物料控件中打开时间选择器。 一旦我开始编辑第一个TF,并且如果我点击第二个TF,即使我点击“完成”按钮,数字键盘也不会消失。 完成按钮是使用工具栏创建的,并且该方法包含“ view.endEditing”代码。它可以正常工作,但不能在上述条件下工作。
override func viewDidLoad() {
super.viewDidLoad()
rateInPointsTextField.delegate = self
}
extension MyAvailabilityVC : UITextFieldDelegate{
let toolbar = UIToolbar()
toolbar.sizeToFit()
//done button for toolbaar
let done = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(donePressed))
toolbar.setItems([done], animated: false)
self.rateInPointsTextField.inputAccessoryView = toolbar
@objc func donePressed(){
self.view.endEditing(true)
}
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == self.fromTimeTextField{
let timePicker = MDTimePickerDialog()
timePicker.delegate = self
timePicker.tag = 100
timePicker.clockMode = .mode12H
timePicker.show()
self.view.endEditing(true)
}
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
self.rateInPointsTextField.resignFirstResponder()
return true
}
}
答案 0 :(得分:2)
在视图控制器中确认UITextFieldDelegate
并将TF委托设置为self
class YourViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var your_tf: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
your_tf.delegate = self;
}
....
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
现在,当您按键盘的完成/返回按钮时,键盘将关闭。如果您想退出已创建的按钮,则可以像这样通过@Action有趣的方式来调用textFieldShouldReturn(your_tf)
。
...
@objc func donePressed(){
textFieldShouldReturn(your_tf)
}