【发布时间】:2026-01-03 19:00:01
【问题描述】:
我有一个手势识别器可以关闭我的键盘,但这会妨碍 tableView didSelectAtRow 因为 tableView 无法识别点击,除非它是长按。当我在模拟器中运行它并轻轻点击 tableViewCell 时,它注册为点击以关闭键盘,而不是点击 tableView。但是,如果我在模拟器中点击并按住一段时间,它将关闭键盘并注册为 tableView 的 didSelectAtRow。这类似于问题UITableView clicked and no cell selected,but long press trigger cell selected,但我不知道如何使用Objective-C。我想知道是否有人对我的问题有解决方法。我在想是否有一种方法可以识别我在 tableView 中轻按,将取消 gestureRecognizer,但我不知道如何继续。
这是我目前所拥有的:
override func viewDidLoad() {
super.viewDidLoad()
searchBar.delegate = self
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(AddressVC.hideKeyboard))
tapGesture.cancelsTouchesInView = false
//searchResultsTableView.addGestureRecognizer(tapGesture)
self.view.addGestureRecognizer(tapGesture)
}
func hideKeyboard()
{
self.view.endEditing(true)
}
【问题讨论】:
-
将 Obj-C 翻译成 Swift 的快速指南:
[a b:c]变为a.b(c)。
标签: swift uitableview uigesturerecognizer didselectrowatindexpath uilongpressgesturerecogni