在SWIFT中的几个视图上使用手势识别器的UITableView

时间:2016-02-24 11:14:50

标签: swift uitableview uigesturerecognizer

我尝试在自定义tableView中的几个元素上使用gestureRecognizer和自定义单元格。

我有两个链接到特定操作的imageView。 如果我不触摸这些图像,我想为单元格的背景着色。

因此代码不能在didSelectRowAtIndexPath方法中。

我尝试这样的事情但是对于程序来说,它似乎从未触及过图像。

我误解的地方?

class MyTableExampleViewController: UIViewController, UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()

    // Gesture recognizer
    let tapGestureRecognizer: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "handleTapGestureRecognizer:")
    self.tableView.addGestureRecognizer(tapGestureRecognizer)
}


...

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell:CustomExampleCell = tableView.dequeueReusableCellWithIdentifier("CustomExampleCell") as! CustomExampleCell

    cell.playImageView.image = UIImage(named: play)
    cell.stopImageView.image = UIImage(named: stop)

    return cell
}


func handleTapGestureRecognizer(gestureRecognizer:UITapGestureRecognizer) {
    let touchPoint:CGPoint = gestureRecognizer.locationInView(self.tableView)
    let indexPath = self.tableView.indexPathForRowAtPoint(touchPoint)

    let cell:CustomExampleCell = tableView.dequeueReusableCellWithIdentifier("CustomExampleCell") as! CustomExampleCell

    if let _ = cell.playImageView.layer.hitTest(touchPoint) {
        print("Action Play")
    } else if let _ = cell.stopImageView.layer.hitTest(touchPoint) {
        print("Action Stop")
    } else {
        cell.backgroundColor = UIColor.greenColor()
    }

}



}

1 个答案:

答案 0 :(得分:0)

您需要在CustomExampleCell中处理触摸。然后实现一个委托,以便在需要时通知你的viewcontroller。