gpt4 book ai didi

swift - 如何在 Swift 中先点击隐藏键盘,然后再次点击选择单元格?

转载 作者:行者123 更新时间:2023-11-30 11:36:00 28 4
gpt4 key购买 nike

我有以下扩展,当在 View 中的任何位置注册点击时,它会隐藏键盘。

    //Extension to hide the keyboard when tap anywhere
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 的 viewDidLoad() 中使用,它也是 TableView Controller 的委托(delegate)/数据源。

 self.hideKeyboardWhenTappedAround()

键盘的关闭效果非常好,尽管我所追求的行为是在用户再次点击以从列表中选择一行之前,首先点击 View /表格 View 上的任意位置,然后首先关闭键盘表格 View 中的搜索结果。

目前,点击任意位置不仅会关闭键盘,还会选择用户点击的单元格。

最佳答案

在 didselectrow 方法中添加通知观察者和检查键盘。

var isKeyBoard = false

override func viewDidLoad() {

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillDisappear(_:)), name: Notification.Name.UIKeyboardWillHide, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillAppear(_:)), name: Notification.Name.UIKeyboardWillShow, object: nil)
}

@objc func keyboardWillAppear(_ notification: NSNotification) {
if let userInfo = notification.userInfo,
isKeyBoard = true
}
}

@objc func keyboardWillDisappear(_ notification: NSNotification) {
isKeyBoard = false
}

deinit {
NotificationCenter.default.removeObserver(self)
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

if isKeyBoard {
self.view.endEditing(true)
return

}

}

关于swift - 如何在 Swift 中先点击隐藏键盘,然后再次点击选择单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49767486/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com