显示计时器选取器时出现问题。有两个文本字段: 1.第一个打开一个数字键盘。2.秒从材质控制中打开时间选择器。一旦我开始编辑第一个TF &如果我点击第二个TF,即使我点击Done按钮,数字键盘也不会消失。done按钮是使用ToolBar创建的&该方法包含"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
}
}
发布于 2020-02-28 18:51:22
在视图控制器中确认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
}
}
现在,当您按下键盘上的完成/返回按钮时,键盘将关闭。如果你想从你创建的按钮中退出,那么就像这样从done @Action fun调用textFieldShouldReturn(your_tf)
。
...
@objc func donePressed(){
textFieldShouldReturn(your_tf)
}
https://stackoverflow.com/questions/60450098
复制相似问题