【问题标题】:dismiss ViewController and dismiss keyboard not working together关闭 ViewController 和关闭键盘不能一起工作
【发布时间】:2018-05-17 03:04:15
【问题描述】:

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

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

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

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

这很好用。

对于每个 UITextField,如果用户点击屏幕上的任何其他位置,我希望键盘关闭。 为此,我在 swift 文件中实现了此代码:(此解除键盘/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 被关闭

知道怎么解决吗?

【问题讨论】:

    标签: ios xib viewcontroller


    【解决方案1】:
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.view.endEditing(true)
    }
    

    【讨论】:

    • 非常感谢苏雷什!这非常有效。这种方法比设置 UIGestureRecognizer 等更好吗?这当然是更少的代码!
    猜你喜欢
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 2014-10-19
    相关资源
    最近更新 更多