При нажатии за пределами панели поиска исчезнет клавиатура - SWIFT - PullRequest
0 голосов
/ 25 августа 2018

У меня есть UIViewController, и я встроил панель поиска и представление коллекции. Когда я нажимаю на панели поиска, появляется клавиатура. Я хотел бы скрыть эту клавиатуру, если пользователь решает передумать, нажимая в любом месте на экране, кроме строки поиска. Я безуспешно пробовал следующее:

  1. Добавление распознавателя жестов касанием
  2. с использованием 'self.mySearchBar.endEditing (true)'

    class CollectionViewFolder: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate ,UICollectionViewDelegateFlowLayout, UISearchBarDelegate{
    
    /*** OUTLETS ***/
    @IBOutlet weak var mySearchBar: UISearchBar!
    
    
    // 1. I have tried adding a Tap Gesture Recognizer
    // TAP ON SCREEN LISTENER
    @IBAction func tapOnScreen(_ sender: UITapGestureRecognizer) {
       print("tap tap ...")
       self.mySearchBar.resignFirstResponder()
    }
    
    
    
    // 2.  Added the following to the viewDidLoad:
    override func viewDidLoad() {
       super.viewDidLoad()
    
       self.mySearchBar.endEditing(true)
     }
    
    }
    

enter image description here

1 Ответ

0 голосов
/ 25 августа 2018

Вы можете использовать это расширение.

extension UIViewController {
    func hideKeyboardWhenTappedAround() {
        let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
        tap.cancelsTouchesInView = false
        view.addGestureRecognizer(tap)
    }

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

Использование.По вашему мнению, контроллер:

override func viewDidLoad() {
    super.viewDidLoad()

    hideKeyboardWhenTappedAround()
}
...