UICollectionView:补充视图阻止项目选择

时间:2014-06-25 19:16:04

标签: ios objective-c uicollectionview uicollectionviewcell uicollectionviewlayout

我正在为UICollectionView实施日历布局。有“事件”单元格和“当前时间”补充视图。根据设计,我在上面的事件中显示“当前时间”视图。

问题在于,如果用户触摸“当前时间”视图,则无法选择“事件”单元格。

我试图覆盖补充视图的- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event方法并返回nil,它从未调用过。对于此补充观点,userInteractionEnabled等于YES

任何想法如何将补充视图中的触摸转移到UICollectionView单元格?

2 个答案:

答案 0 :(得分:2)

我不完全理解你想要实现的目标,也许一些代码会有所帮助,但我的猜测是你想在标题视图中点击某些东西并选择今天的事件?

如果需要,您需要在补充视图中捕获触摸,可能还有UIButton。然后你想打电话

[_collectionView selectItemAtIndexPath:myIndexPath animated:YES scrollPosition:position];

如果你说触摸补充视图会阻挡集合视图上的触摸,我会检查帧,因为你可能有其他东西并没有意识到。也许尝试将元素的背景设置为红色,以查看其中的位置。

答案 1 :(得分:1)

我认为最好的方法是优化您的响应链,查看Event Delivery: The Responder Chain

但是如果你试图做一些非常不规则的事情,你总是可以通过一些专门的视图明确地处理用户触摸。如果您已获得用户触摸的坐标,则使用 UICollectionView 方法获取受影响单元格的索引路径:

- (NSIndexPath *)indexPathForItemAtPoint:(CGPoint)point

不要忘记使用 UIView 方法将坐标转换为适当的坐标系:

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view