我问了一个类似的问题,我已经阅读了无数其他问题,但我仍然无法解决这个问题,而且我已经花了几个晚上试图解决它。
我有一个自定义的UITableView类,我已经将其子类化为不同的东西。在我的子类中,我用户覆盖了诸如didSelectRowAtIndexPath之类的东西。
如果我将它分配给一个表它可以正常工作,除了我必须长按才能触发didSelectRowAtIndexPath。 Tap似乎根本无法工作。我在项目的其他地方确实有一个手势识别器,但是我已经将它们全部禁用了,而且我仍然没有运气。我已经读到这可能与超级或触摸有关,但我觉得我现在完全陷入困境。请帮帮我!
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")
}
答案 0 :(得分:23)
我想出来了。我忘记了我有一个UIViewController扩展,可以解决键盘上的问题:
extension UIViewController {
func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
view.addGestureRecognizer(tap)
}
这是罪魁祸首!快速修复是添加:
tap.cancelsTouchesInView = false
在添加手势识别器之前。不能相信我在这上面度过了3个晚上。