1

CollectionView在单元格中有一个图像。对于单元格或单元格中的图像,我想实现 2 个调用不同函数的触摸行为。

1)在 UIImage 上的正常(短)点击将调用带有详细信息的视图 2)触摸并按住 UIImage 将显示一个弹出窗口

目前我不清楚如何最好地实现这一点。

一方面,我可以尝试使用 UIButton,这意味着我有一个带有图像的 UIButton。然后我可以使用选项 1)Touch up inside和选项 2) Touch down。但在我的脑海里,它说Touch down在这两种情况下都完成了,ios怎么知道这是一个短按而不是触摸并按住......我是否必须帮助系统区分它?除此之外,将所有图像(可能很多)都作为 UIButtons 听起来很奇怪。是否可以为 UIButton 分配 2 次触摸?

另一方面,我可以留在 UIImage 并使用 touchesBegan,touchesMovedtouchesEnded. 并编写检查触摸时间的函数......在这里我认为可以调用两个不同的函数。

对于两者:这是否会干扰 CollectionView 的滚动行为?由于滚动是触摸并按住并拖动...?

触摸事件参考

有任何想法吗?

干杯——杰里克

4

1 回答 1

0

这是 UIGestureRecognizer 的一个很好的应用,特别UITapGestureRecognizerUILongPressGestureRecognizer. 两者都可以附加到每个图像或每个单元格。附加到图像时,请务必设置它的userInteractionEnabled属性 = YES。

还要记住,集合视图单元格被重用,因此您应该在添加任何之前检查视图的手势识别器数组的计数。

区分作为点击开始的触地和作为长按开始的触地不是软件的工作 - 这是算命。唯一的选择——不管是什么软件——是识别发布时的点击(何时state == UIGestureRecognizerStateRecognized)。

两个相互竞争的手势应该使用 交互requireGestureRecognizerToFail:。请参阅此处的参考资料

于 2013-06-12T20:30:14.683 回答