UITableView didSelectRowAtIndexPath 只能识别双指轻点

7
我试图在选中一个UITableViewCell时弹出一个UIAlertController。我已经检查了所有与storyboard有关的问题,例如“Selection: Single Selection”,甚至在viewDidLoad()的顶部设置了tableView.allowsSelection = true。我还检查了使用didDeselect而不是didSelect的问题。
奇怪的是,只有当我同时用两个手指轻触它或长时间按压它(约2秒钟然后松开)时,该单元格才会被选中。这是一个已知的问题吗?
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    print("Tap registered")
}

非常感谢您的帮助。


你还有其他相关的代码可以展示吗?你实现了哪些触摸手势? - LuKenneth
你使用了手势识别器吗? - Bhavuk Jain
这个特定的视图控制器没有实现任何手势识别器。 - Albin Martinsson
我也遇到了这个问题,非常奇怪。 - Paul Lehn
这个问题有任何更新吗? - Miras Maratuly
3个回答

2
我遇到了类似的问题,但看到其他帖子指出附加在父视图上的UIGesture Recognizer是问题所在。我也这样做了。手势识别器用于关闭键盘。因此,如果您在UITableView中使用UIGestureRecognizer,请注意处理。

1

由于这个问题已经存在很长时间了,所以我会把我的解决方案留在这里,供其他遇到这个问题的人使用,我使用了这种方法,它可以正常工作。

对于tableViewCell

首先,声明一个变量,我们检查null以避免表格崩溃。

var tapOnCell: (() -> Void)?

然后在awakeFromNib块内,我们为点击操作创建一个UITapGestureRecognizer手势,该手势要求我们在单元格上轻点1次。

    let gesture = UITapGestureRecognizer(target: self, action: #selector(tapOnContenView))
    gesture.numberOfTapsRequired = 1
    contentView.addGestureRecognizer(gesture)

然后创建一个如下的函数。
@objc func tapOnContenView() {
    if let tapOnCell = self.tapOnCell {
        tapOnCell()
    }
}

我们现在结束了对tableViewCell的讲解,现在是时候介绍tableView了。
对于tableView(UITableViewDataSource),我们需要调用在tableViewCell中创建的函数并在这里使用它。
cell.tapOnCell = {
        self.tapOnSingleCell(indexPath: indexPath)
    }

但首先,我们需要创建一个函数来执行您单击单元格时要执行的操作,对我而言,当我单击单元格时,我想转到另一个视图控制器。

func tapOnSingleCell(indexPath: IndexPath) {

    let jobDetail: JobDetailViewController = 
JobDetailViewController.newInstance(storyboardName: .jobSearch)
    let job = self.relatedList[indexPath.row]
}

我希望这个解决方案对您有所帮助,就像它对我有所帮助一样。加油!


0

你只需要使用:

tap.cancelsTouchesInView = NO; 

代码:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                               initWithTarget:self
                               action:@selector(yourFunctionOnTap)];
tap.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:tap];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接