解除ViewController并关闭不能同时工作的键盘

时间:2017-12-03 15:34:10

标签: ios xib viewcontroller

按下按钮时,我显示了以下XIB文件(.custom)。

@IBAction func contactUsBtnPressed(_ sender: Any) {
            let contactUs = ContactUsXIB()
            contactUs.modalPresentationStyle = .custom
            present(contactUs, animated: false, completion: nil)
        }

enter image description here 您会注意到右上角有一个关闭按钮。 我已将以下代码分配给此按钮:

@IBAction func closeBtnPressed(_ sender: Any) {
        dismiss(animated: false, completion: nil)
    }

这很好用。

对于每个UITextField,如果用户点击屏幕上的任何其他位置,我希望键盘关闭。 我在swift文件中实现了这个代码来实现这一点:(这解雇了keyboard / view.endEditing(true)代码在我的其他应用程序中已经工作了很多次)

import UIKit

class ContactUsXIB: UIViewController {

    @IBOutlet weak var nameField: UITextField!
    @IBOutlet weak var emailField: UITextField!
    @IBOutlet weak var telephoneField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        setupView()

    }

    @IBAction func closeBtnPressed(_ sender: Any) {
        dismiss(animated: false, completion: nil)
    }

    func setupView() {
        let tap: UIGestureRecognizer = UIGestureRecognizer(target: self, action: #selector(ContactUsXIB.dismissKeyboard))
        view.addGestureRecognizer(tap)     
    }

    @objc func dismissKeyboard() {
        view.endEditing(true)  
    }
}

然而,当我实现此功能时,关闭按钮不起作用,也不解除键盘。 这是我现在的错误行为:

  1. 显示XIB,点击关闭按钮 - 无响应

    点按文字字段 - XIB被解雇

  2. 提交XIB

    点按文字字段,点按其他地方即可关闭键盘 - 否 响应

    点按关闭按钮 - 无响应

    点按文字字段 - XIB被解雇

  3. 知道如何解决?

1 个答案:

答案 0 :(得分:1)

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.view.endEditing(true)
}