1. ホーム
  2. ios

[解決済み] SwiftでiOSキーボードを任意の場所でタッチして閉じる

2022-03-22 07:02:46

質問

あちこち探しているのですが、なかなか見つかりません。 キーボードを解除する方法は Objective-C を使用する方法がわかりません。 Swift ? どなたかご存知ですか?

解決方法は?

override func viewDidLoad() {
    super.viewDidLoad()
          
    //Looks for single or multiple taps. 
     let tap = UITapGestureRecognizer(target: self, action: #selector(UIInputViewController.dismissKeyboard))

    //Uncomment the line below if you want the tap not not interfere and cancel other interactions.
    //tap.cancelsTouchesInView = false 

    view.addGestureRecognizer(tap)
}

//Calls this function when the tap is recognized.
@objc func dismissKeyboard() {
    //Causes the view (or one of its embedded text fields) to resign the first responder status.
    view.endEditing(true)
}

この機能を複数で使用する場合、このタスクを実行する別の方法を示します。 UIViewControllers :

// Put this piece of code anywhere you like
extension UIViewController {
    func hideKeyboardWhenTappedAround() {
        let tap = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
        tap.cancelsTouchesInView = false            
        view.addGestureRecognizer(tap)
    }
    
    @objc func dismissKeyboard() {
        view.endEditing(true)
    }
}

これで、すべての UIViewController この関数を呼び出すだけでよいのです。

override func viewDidLoad() {
    super.viewDidLoad()
    self.hideKeyboardWhenTappedAround() 
}

この関数は、私のレポに標準関数として含まれており、このような便利なSwift Extensionsがたくさん含まれているので、チェックしてみてください。 https://github.com/goktugyil/EZSwiftExtensions