Close iOS Keyboard by touching anywhere using Swift Close iOS Keyboard by touching anywhere using Swift ios ios

Close iOS Keyboard by touching anywhere using 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)}

Here is another way to do this task if you are going to use this functionality in multiple UIViewControllers:

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

Now in every UIViewController, all you have to do is call this function:

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

This function is included as a standard function in my repo which contains a lot of useful Swift Extensions like this one, check it out: https://github.com/goktugyil/EZSwiftExtensions


An answer to your question on how to dismiss the keyboard in Xcode 6.1 using Swift below:

import UIKitclass ItemViewController: UIViewController, UITextFieldDelegate {    @IBOutlet var textFieldItemName: UITextField!    @IBOutlet var textFieldQt: UITextField!    @IBOutlet var textFieldMoreInfo: UITextField!    override func viewDidLoad() {        super.viewDidLoad()        textFieldItemName.delegate = self        textFieldQt.delegate = self        textFieldMoreInfo.delegate = self    }                       ...    /**     * Called when 'return' key pressed. return NO to ignore.     */    func textFieldShouldReturn(textField: UITextField) -> Bool {        textField.resignFirstResponder()        return true    }   /**    * Called when the user click on the view (outside the UITextField).    */    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {        self.view.endEditing(true)    }}

(Source of this information).


Swift 4 working

Create extension as below & call hideKeyboardWhenTappedAround() in your Base view controller.

////  UIViewController+Extension.swift//  Project Name////  Created by ABC on 2/3/18.//  Copyright © 2018 ABC. All rights reserved.//import UIKitextension UIViewController {    func hideKeyboardWhenTappedAround() {        let tapGesture = UITapGestureRecognizer(target: self,                          action: #selector(hideKeyboard))        view.addGestureRecognizer(tapGesture)    }    @objc func hideKeyboard() {        view.endEditing(true)    }}

Most important thing to call in your Base View Controller so that no need to call all time in all view controllers.