我正在为UICollectionView
实施日历布局。有“事件”单元格和“当前时间”补充视图。根据设计,我在上面的事件中显示“当前时间”视图。
问题在于,如果用户触摸“当前时间”视图,则无法选择“事件”单元格。
我试图覆盖补充视图的- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
方法并返回nil,它从未调用过。对于此补充观点,userInteractionEnabled
等于YES
。
任何想法如何将补充视图中的触摸转移到UICollectionView
单元格?
答案 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