我想在用户单击或双击 UITableViewCell 的 imageView 时收到通知。我一直在尝试向 imageView 添加子视图,并在子视图控制器中使用 touchesBegan:withEvent:,但无法触发我预期的事件。我该怎么做?
问问题
4951 次
3 回答
3
另一种解决方案:
向 UIImageView 添加一个类别来处理触摸事件。然后为每个触摸事件发送通知并订阅视图控制器(或单元控制器)中的通知。
如果你感觉很活泼,你也可以将方法调用转发给视图控制器。
然后为单元格的 imageView 启用触摸事件:
[self setUserInteractionEnabled:YES];
现在所有的触摸都将被发送到你想要处理它们的地方,而不需要子类化。它是可重复使用的。
于 2009-12-01T17:27:42.770 回答
1
在我的项目中,我将 UIImageView 子类化以添加用户交互,如果它有用,您可以简单地查看 Apple 示例代码,项目“TapToZoom”。简而言之,您必须启用用户交互,然后 UIImageView 才会开始响应触摸。这是通过设置 userInteractionEnabled 属性来完成的:
[self setUserInteractionEnabled:YES];
然后您可以自定义其他触摸属性,例如:
[self setMultipleTouchEnabled:YES];
twoFingerTapIsPossible = YES;
否则,您可能会实现一种缩略图视图,例如照片应用程序,比如说。根据您的目标,您还可以考虑使用 UIButton,您可以在其中设置背景图像。我有一个项目,我只需通过在每个 tableView 行中以编程方式放置四个 UIButtons 来模仿原始照片应用程序的照片缩略图视图,它工作正常。干杯
于 2009-11-23T09:25:44.613 回答
1
感谢楼上的回答,工作已经完成。
我的解决方案: 子类化 UIView,覆盖 touchesBegan:withEvent: 在它的实现文件中 将 UIView(作为子视图)添加到 cell.view 并覆盖 imageView 的位置,然后使子视图最接近透明(alpha=0.015f) 完毕。 它工作正常
注意:如果 alpha 数字太小(0.01f),不会触发触摸事件,有人知道为什么吗?
于 2009-11-24T05:37:21.927 回答