在搜索栏外单击时使键盘消失 - SWIFT
Make keyboard disappear when clicking outside of Search Bar - SWIFT
我有一个 UIViewController,我嵌入了一个搜索栏和一个集合视图。当我按下搜索栏时,键盘出现。如果用户决定通过点击屏幕上除搜索栏以外的任何位置来改变主意,我想隐藏此键盘。我尝试了以下但没有成功:
- 添加点击手势识别器
使用'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)
}
}
您可以使用此扩展程序。
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)
}
}
用法。在你的 viewController:
override func viewDidLoad() {
super.viewDidLoad()
hideKeyboardWhenTappedAround()
}
我有一个 UIViewController,我嵌入了一个搜索栏和一个集合视图。当我按下搜索栏时,键盘出现。如果用户决定通过点击屏幕上除搜索栏以外的任何位置来改变主意,我想隐藏此键盘。我尝试了以下但没有成功:
- 添加点击手势识别器
使用'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) } }
您可以使用此扩展程序。
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)
}
}
用法。在你的 viewController:
override func viewDidLoad() {
super.viewDidLoad()
hideKeyboardWhenTappedAround()
}