将UITapGestureRecognizer添加到tableViewCell上的子视图

时间:2017-06-30 14:23:13

标签: ios swift uitableview uikit

大家,我正在尝试向StackView添加手势识别器,它位于带有该代码的TableViewCell上,但不起作用:

@IBOutlet var categoryStackView: UIStackView! {
    didSet {
        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(categoryStackViewTapped))
        categoryStackView.addGestureRecognizer(tapGesture)
    }
}

它不起作用,我检查了StackView并启用了用户交互式

@objc func categoryStackViewTapped(sender: UITapGestureRecognizer) {
    print("Here we are")
}

1 个答案:

答案 0 :(得分:0)

如果您stackView中有多个tableView,我建议采用其他方法。将当前索引行添加为标记,然后将单击操作添加到按钮处理函数。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! Cell
    cell.stackView.tag = indexPath.row
    cell.stackView.addTarget(self, action:#selector(categoryStackViewTapped(sender:)), for: .touchUpInside)

    return cell
}

然后在处理程序函数中,您可以通过读取此标记

来获取正确的索引路径
func categoryStackViewTapped(sender: UIStackView) {
    let myIndexPath = IndexPath(row: sender.tag, section: 0)
    //... other code here
}