Ios 无法从UITextField辞职FirstResponder

Ios 无法从UITextField辞职FirstResponder,ios,Ios,你知道(你能明白)为什么我不能辞去FirstResponder的职务并隐藏键盘吗 供参考:Xcode 9 import UIKit class ViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var label: UILabel! @IBOutlet weak var text: UITextField! override func viewDidLoad() {

你知道(你能明白)为什么我不能辞去FirstResponder的职务并隐藏键盘吗

供参考:Xcode 9

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var text: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.text.delegate = self
        let tap = UITapGestureRecognizer(target: self, action: #selector(ViewController.tapFunction))
        label.isUserInteractionEnabled = true
        label.addGestureRecognizer(tap)
    }

    var keyboardInputEnabled = true
    @objc func tapFunction(sender:UITapGestureRecognizer) {
        if self.keyboardInputEnabled {
            self.text.becomeFirstResponder()
        }else{
            self.view.endEditing(true)
            self.text.resignFirstResponder()
        }
        self.keyboardInputEnabled = !self.keyboardInputEnabled
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        return self.keyboardInputEnabled
    }

    func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
        return self.keyboardInputEnabled
    }

    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
        return self.keyboardInputEnabled
    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}
试一试

self.view.endEditing(true)
用于禁用键盘


self.view.endEditing(true)
用于禁用键盘

,因为在第二次运行
tapFunction
时,
textfield应该取消编辑
返回false,从而阻止其结束编辑模式

取自

通常,您会从该方法返回true以允许文本 字段以退出第一响应者状态。您可能返回false, 但是,如果您的委托在 文本字段。返回false可防止用户切换到 另一个控件,直到文本字段包含有效值


因为第二次运行
tapFunction
时,
textfield应该取消编辑
返回false,这会阻止它结束编辑模式

取自

通常,您会从该方法返回true以允许文本 字段以退出第一响应者状态。您可能返回false, 但是,如果您的委托在 文本字段。返回false可防止用户切换到 另一个控件,直到文本字段包含有效值