如何获取UITableViewCell的imageView触摸事件?
我想在用户单击或双击UITableViewCell的imageView时收到通知。我一直试图添加一个子视图到imageView,并使用touchesBegan:withEvent:在子视图控制器中,但不能触发我期望的事件。我该怎么做?如何获取UITableViewCell的imageView触摸事件?
在我的项目中,我添加了用户交互的子类UIImageView,如果它可以是有用的,你可以简单地看看苹果示例代码项目“TapToZoom”。 简而言之,您必须启用用户交互,并且只有在此之后,UIImageView才会开始回应触摸。 这是通过设置userInteractionEnabled属性来完成:
[self setUserInteractionEnabled:YES];
那么你可以通过自定义其他触摸的特性,例如:
[self setMultipleTouchEnabled:YES];
twoFingerTapIsPossible = YES;
否则,你可能会实现一种缩略图查看喜欢的照片应用程序,让我们说。根据您的目标,您还可以考虑使用UIButton,您可以在其中设置背景图像。我有一个项目,我模仿原始照片应用程序的照片缩略图视图,只需在每个tableView行中以编程方式放置四个UIButton,并且工作正常。 干杯
子类化UIImageView如何帮助?你不能设置UITableViewCell使用的imageview – user102008 2012-03-21 01:40:32
感谢上面的答案,工作已经完成。
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),也不会触发触摸事件,任何人都知道这是为什么?
还有一个解决办法:
添加类别的UIImageView处理触摸事件。然后发送每个触摸事件的通知并订阅视图控制器(或单元控制器)中的通知。
如果您感觉活泼,也可以将方法调用转发给视图控制器。
然后启用触摸事件的小区的ImageView的:
[self setUserInteractionEnabled:YES];
现在,所有触摸将发送要处理它们,没有子。它可以重复使用。
我尝试了几个/几个不同的解决方案,但这个解决方案工作,并且是最简单和最干净的方式来做到这一点。我可以利用现有的UITableViewCell样式来布局单元格(即,我不必为单元格添加子视图并将它们放在外面),或者子类化任何东西。非常好,谢谢! – yabada 2010-08-13 17:14:33
imageview通过任何函数都无法触摸事件。 但是,您可以尝试放置UIButton而不是imageview并设置该按钮的背景图像,以便您可以同时获得图像和按钮触摸事件。这可能符合你的目的。 – 2009-11-23 08:37:50
看看这个答案:http://*.com/questions/1606492/touch-event-is-not-working-in-uimageview/1606616#1606616 – 2009-11-23 08:45:23