我尝试在自定义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()
}
}
}
答案 0 :(得分:0)
您需要在CustomExampleCell中处理触摸。然后实现一个委托,以便在需要时通知你的viewcontroller。