完成按钮使应用崩溃

时间:2018-07-02 22:15:51

标签: swift

当我输入UITextField时,我想要一种解散键盘的方法。我在Google上进行了查找,并在Medium上找到了它:

https://medium.com/@KaushElsewhere/how-to-dismiss-keyboard-in-a-view-controller-of-ios-3b1bfe973ad1

每次我按下“完成”按钮时,应用都会崩溃。任何帮助将不胜感激。

代码:

override func viewDidLoad() {
   super.viewDidLoad()
   //init toolbar
   let toolbar:UIToolbar = UIToolbar(frame: CGRect(x: 0, y: 0,  width: self.view.frame.size.width, height: 30))
   //create left side empty space so that done button set on right side
   let flexSpace = UIBarButtonItem(barButtonSystemItem:    .flexibleSpace, target: nil, action: nil)
   let doneBtn: UIBarButtonItem = UIBarButtonItem(title: “Done”, style: .done, target: self, action: Selector(“doneButtonAction”))
   toolbar.setItems([flexSpace, doneBtn], animated: false)
   toolbar.sizeToFit()
   //setting toolbar as inputAccessoryView
   self.textField1.inputAccessoryView = toolbar
   self.textField2.inputAccessoryView = toolbar
}
func doneButtonAction() {
   self.view.endEditing(true)
}

1 个答案:

答案 0 :(得分:0)

您需要在您的@objc函数中添加 doneButtonAction ,因为这是崩溃的原因。并使用#selector代替Selector。

override func viewDidLoad() {
    super.viewDidLoad()
    //init toolbar
    let toolbar:UIToolbar = UIToolbar(frame: CGRect(x: 0, y: 0,  width: 
    self.view.frame.size.width, height: 30))
    //create left side empty space so that done button set on right side
    let flexSpace = UIBarButtonItem(barButtonSystemItem:    .flexibleSpace, target: nil, action: nil)
    let doneBtn: UIBarButtonItem = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(doneButtonAction))
    toolbar.setItems([flexSpace, doneBtn], animated: false)
    toolbar.sizeToFit()
    //setting toolbar as inputAccessoryView
    self.textField1.inputAccessoryView = toolbar
    self.textField2.inputAccessoryView = toolbar
}

@objc func doneButtonAction() {
    self.view.endEditing(true)
}