如何在UITableViewCell的imageView上获取触摸事件?

时间:2009-11-23 07:13:31

标签: iphone touch

我想在用户单击或双击UITableViewCell的imageView时收到通知。我一直在尝试向imageView添加子视图,并在子视图控制器中使用touchesBegan:withEvent:但不能触发我预期的事件。我该怎么做?

3 个答案:

答案 0 :(得分:3)

还有一个解决方案:

为UIImageView添加一个类别来处理触摸事件。然后发出每个触摸事件的通知,并在视图控制器(或单元控制器)中订阅通知。

如果您感觉活泼,您还可以将方法调用转发给视图控制器。

然后为单元格的imageView启用触摸事件:

[self setUserInteractionEnabled:YES];

现在所有触摸都将被发送到您想要处理它们的位置,而不进行子类化。它可以重复使用。

答案 1 :(得分:1)

在我的项目中,我已经将UIImageView子类化为添加用户交互,如果它有用,您只需查看Apple示例代码,项目“TapToZoom”即可。 简而言之,您必须启用用户交互,并且只有在此之后UIImageView才会开始回答触摸。 这是通过设置userInteractionEnabled属性来完成的:

[self setUserInteractionEnabled:YES];

然后您可以自定义其他触摸属性,例如:

[self setMultipleTouchEnabled:YES];
twoFingerTapIsPossible = YES;

否则,你可以实现像照片应用程序那样的缩略图视图。根据您的目标,您还可以考虑使用UIButton,您可以在其中设置背景图像。我有一个项目,我模仿原始照片应用程序的照片缩略图视图只需通过编程方式在每个tableView行中放置四个UIButton,它工作正常。 干杯

答案 2 :(得分:1)

感谢上面的答案,工作已经完成。

My solution: 
  subclass a UIView, override touchesBegan:withEvent: in it's implementation file
  add the UIView(as subview) to cell.view and cover the position of imageView, then make the subview nearest transparent(alpha=0.015f)
  done.
  it works fine

注意:如果阿尔法数字太小(0.01f),就不会触发触摸事件,有人知道为什么吗?