나는 hitTest를 오버로드했고, 정상적으로 작동합니다. 특정 조건에서이 방법을 재정의하지 않은 것처럼 행동하고 싶습니다. 문제가있는 곳입니다.UICollectionView hitTest -> 정상적인 동작
사용자 정의 UICollectionViewLayout
구현을 사용하여 MKMapView
이상의 셀을 렌더링하려면 하위 클래스 UICollectionView
을 사용하고 있습니다. UICollectionView
하위 클래스에서 hitTest
을 재정의해야 터치 이벤트를 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
등 ... 아무 것도 정상적으로 작동하지 않습니다 (셀을 위아래로 스크롤 할 수 없음).
정확합니다. 나는 그것을 시도했지만 동시에 다음과 같이 구현했다. - (BOOL) gestureRecognizerShouldBegin : (UIGestureRecognizer *) gestureRecognizer { return NO; } – VaporwareWolf