2016-03-10 170 views
1

我目前有textfieldpickerbutton和几个textviews/labelsiOS - 按下按钮时关闭键盘

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) 
     } 
+0

在你的'main.storyboard'上,检查你的按钮是否有多个连接... – Thomas

+0

只有引用outlet的按钮是calcButton函数,我试图添加self.view.endEditing(true)到该函数的结尾,doesn'工作。 – arthur

+0

你到底想要什么,出了什么问题?当用户按下按钮'1'时,是否想要关闭键盘?就像你在问题中提到的那样,或者当他们按下'calculateButton'时? – Eendje

回答

5

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

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

或者,在按钮的功能,这样做:

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

记住通过控制+到您的按钮连接到您的viewController点击此按钮将其拖动到你的控制器文件,然后,在弹出的,点击connection并选择action,并给它一个名字:

enter image description here

此外,检查是否有此按钮的多个连接,这可能是一个问题......

+0

我得到这个错误http://imgur.com/zIyYQ3s – arthur

+1

你能出现一些代码吗? – Thomas

+0

仍然崩溃,是的,我会编辑主帖1秒 – arthur

2

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

你可以通过调用函数endEditing(force: Bool)

这将导致视图(或嵌入文本字段中的一个)辞职第一响应状态。

使用这样的:

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

我得到这个错误http://imgur.com/zIyYQ3s – arthur

+2

你的按钮需要连接到'@ IBAction'。我可能会被连接到其他东西。在界面构建中,您可能需要“按住Ctrl +单击”按钮,并删除所有连接,然后将其连接到'@ IBAction'。 – MrHaze

+0

看看这个:http://rshankar.com/different-ways-to-connect-ibaction-to-uibutton/ – MrHaze

1

首先,按住Ctrl键的目标 - 动作(或使用addTarget ...函数编程)。第二,做这样在你的代码:

self.inputTextField.resignFirstResponder() 
相关问题