我一直在到处找这个,但我似乎找不到。我知道如何解雇使用Objective-C键盘,但我不知道如何使用Swift?有人知道吗?


当前回答

Swift 5只要两行就够了。添加到你的viewDidLoad应该工作。

 let tapGesture = UITapGestureRecognizer(target: view, action: #selector(UIView.endEditing))
 view.addGestureRecognizer(tapGesture)

如果你的点击手势阻止了一些其他的触摸,那么添加这一行:

tapGesture.cancelsTouchesInView = false

其他回答

//Simple exercise to demonstrate, assuming the view controller has a //Textfield, Button and a Label. And that the label should display the //userinputs when button clicked. And if you want the keyboard to disappear //when clicken anywhere on the screen + upon clicking Return key in the //keyboard. Dont forget to add "UITextFieldDelegate" and 
//"self.userInput.delegate = self" as below

import UIKit

class ViewController: UIViewController,UITextFieldDelegate {

    @IBOutlet weak var userInput: UITextField!
    @IBAction func transferBtn(sender: AnyObject) {
                display.text = userInput.text

    }
    @IBOutlet weak var display: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

//This is important for the textFieldShouldReturn function, conforming to textfieldDelegate and setting it to self
        self.userInput.delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

//This is for the keyboard to GO AWAYY !! when user clicks anywhere on the view
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        self.view.endEditing(true)
    }


//This is for the keyboard to GO AWAYY !! when user clicks "Return" key  on the keyboard

    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }

}

在Swift 4中,添加@objc:

在viewDidLoad中:

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.dismissKeyboard))
view.addGestureRecognizer(tap)

功能:

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

作为一个新手程序员,当人们给出更熟练和不必要的回答时,可能会感到困惑……你不需要做上面所示的任何复杂的事情!

这是最简单的选择……在这种情况下,你的键盘出现在响应文本字段-在你的触摸屏函数中,只需添加resignFirstResponder函数。如下所示-键盘将关闭,因为First Responder被释放(退出Responder链)…

override func touchesBegan(_: Set<UITouch>, with: UIEvent?){
    MyTextField.resignFirstResponder()
}

对于Swift3

在viewDidLoad中注册一个事件识别器

let tap = UITapGestureRecognizer(target: self, action: #selector(hideKeyBoard))

然后我们需要在相同的viewDidLoad中添加手势到视图中。

self.view.addGestureRecognizer(tap)

然后我们需要初始化注册的方法

func hideKeyBoard(sender: UITapGestureRecognizer? = nil){
    view.endEditing(true)
}

这一行代码辞去了UIView中所有UITextField的键盘

self.view.endEditing(true)