我目前有textfield
,picker
,button
和多个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)
}
答案 0 :(得分:5)
按下按钮时尝试调用此功能:
func dismissKeyboard() {
self.view.endEditing(true)
}
或者,在按钮功能中,执行以下操作:
@IBAction func button(sender: UIButton) {
self.view.endEditing(true)
}
请记住通过控制+将按钮连接到viewController并单击按钮并将其拖动到控制器文件,然后在弹出窗口中单击connection
并选择action
并给它一个名字:
另外,检查按钮上是否有多个连接,这可能是个问题......
答案 1 :(得分:2)
您只想在单击按钮时结束编辑。
您可以通过调用endEditing(force: Bool)
函数来执行此操作:
导致视图(或其中一个嵌入的文本字段)重新签署第一个响应者状态。
像这样使用:
@IBAction func didTapBtn(sender: UIButton) {
self.view.endEditing(true)
}
答案 2 :(得分:1)
首先,CTRL-DRAG是一个目标动作(或以编程方式使用addTarget ...函数)。第二,在你的代码中这样做:
self.inputTextField.resignFirstResponder()