我问过一个类似的问题,我已经阅读了无数其他问题,但我仍然无法弄清楚这个问题,我已经花了几个晚上试图解决它。
我有一个自定义的 UITableView 类,我将其子类化以调用不同的东西。在我的子类中,我的用户重写了诸如 didSelectRowAtIndexPath 之类的东西。
如果我将它分配给一个表,它工作正常,除了我必须长按才能触发 didSelectRowAtIndexPath。 Tap 似乎根本不起作用。我在项目的其他地方确实有一个手势识别器,但我已经将它们全部禁用,而且我仍然没有运气让点击工作。我读过这可能与 supers 或 touchesbegan 有关,但我觉得我现在完全被困住了。请帮助我!
class BaseTable: UITableView, UITableViewDelegate, UITableViewDataSource {
var rowsInSection: Int { return 0}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
//Standard table set up funcs
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
print(IndexPath.row)
}
}
class NewTable: BaseTable{
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print (IndexPath.row + " NEW")
}
最佳答案
我想通了。我忘记了我有一个 UIViewController 扩展,可以在点击时关闭键盘:
extension UIViewController {
func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
view.addGestureRecognizer(tap)
}
这就是罪魁祸首!快速修复是添加:
tap.cancelsTouchesInView = false
就在添加手势识别器之前。不敢相信我在这上面花了 3 个晚上。
关于ios - 仅在 didSelectRowAtIndexPath 中长按,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39906854/