2016-03-10 171 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() 
相關問題