iOS - 按下按钮时关闭键盘

时间:2016-03-10 23:41:58

标签: ios xcode swift

我目前有textfieldpickerbutton和多个textviews / labels

textfield提示只有数字的键盘,我希望键盘在按下一个按钮时解除。

以下是一些代码片段:

class ViewController: UIViewController, UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate  {

    @IBOutlet weak var provincePicker: UIPickerView!

    @IBOutlet weak var calcButton: UIButton!

    @IBOutlet weak var incomeLabel: UITextView!

    @IBOutlet weak var salaryTextField: UITextField!
    @IBOutlet weak var beforeTax: UITextView!
    @IBOutlet weak var provincialTax: UITextView!
    @IBOutlet weak var federalTax: UITextView!
    @IBOutlet weak var afterTax: UITextView!

...

    override func viewDidLoad() {
  //  numberOnly()
         borders()
         super.viewDidLoad()
         provincePicker.dataSource = self
         provincePicker.delegate = self
    }

...

     @IBAction func calculateButton(sender: UIButton) {
         let formatter           = NSNumberFormatter()
         formatter.numberStyle   = NSNumberFormatterStyle.CurrencyStyle
         formatter.locale        = NSLocale(localeIdentifier: "en_CA")

         let index = provincePicker.selectedRowInComponent(0)

         switch(index) {
         case 0:
            calculate(abBrackets, rates: abRates)   //AB
         //cutting out code here
         dismissKeyboard()
      }

      func dismissKeyboard() {
         self.view.endEditing(true)
      }

3 个答案:

答案 0 :(得分:5)

按下按钮时尝试调用此功能:

    func dismissKeyboard() {
        self.view.endEditing(true)
    }

或者,在按钮功能中,执行以下操作:

@IBAction func button(sender: UIButton) {
    self.view.endEditing(true)
}

请记住通过控制+将按钮连接到viewController并单击按钮并将其拖动到控制器文件,然后在弹出窗口中单击connection并选择action并给它一个名字:

enter image description here

另外,检查按钮上是否有多个连接,这可能是个问题......

答案 1 :(得分:2)

您只想在单击按钮时结束编辑。

您可以通过调用endEditing(force: Bool)函数来执行此操作:

导致视图(或其中一个嵌入的文本字段)重新签署第一个响应者状态。

像这样使用:

@IBAction func didTapBtn(sender: UIButton) {
    self.view.endEditing(true)
}

答案 2 :(得分:1)

首先,CTRL-DRAG是一个目标动作(或以编程方式使用addTarget ...函数)。第二,在你的代码中这样做:

self.inputTextField.resignFirstResponder()