我超越了hitTest,这很好用。我希望它表现得好像我在某些条件下没有覆盖这种方法,以及问题出在哪里。
我使用子类UICollectionView
使用自定义MKMapView
实现在UICollectionViewLayout
上呈现单元格。我需要覆盖hitTest
子类中的UICollectionView
,以便触摸事件可以传递给mapView,并且可以滚动它。一切正常。
我有一个切换机制,可以在我的UICollectionViewLayout
(地图)和UICollectionViewFlowLayout
之间设置动画(将地图上的动画项目设置为网格格式)。这也很好用,但是当我显示流布局时,我希望用户能够像普通的那样滚动UICollectionView
(就好像hitTest不被覆盖一样)。我无法确定hitTest
中要返回的内容,以确定其默认行为。
-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
if(self.tapThrough == YES){
NSArray *indexPaths = [self indexPathsForVisibleItems];
for(NSIndexPath *indexPath in indexPaths){
UICollectionViewCell *cell = [self cellForItemAtIndexPath:indexPath];
if(CGRectContainsPoint(cell.frame, point)){
return cell;
}
}
return nil;
} else {
return ???
}
}
我试过回复了很多东西。 self
,self.superview
等等......没有什么能让它正常运转(我无法上下滚动细胞)。
答案 0 :(得分:1)
如果您想要点击测试的正常行为:
return [super hitTest:point withEvent:event];
这将返回命中测试通常在未被覆盖时返回的内容。