1

UICollectionViewCell에있는 UIViewUIPanGestureRecognizer을 사용하고 있습니다. translationInView 메서드를 사용하여 X 축을 따라 변환을 가져오고 UIView 왼쪽과 오른쪽을 슬라이드합니다. 그것은 잘 작동하지만 지금은 내 손가락이 셀에있는 경우 CollectionView에서 위아래로 스크롤 할 수 없습니다. PanGestureRecognizerUICollectionView에 세로 스크롤을 전달하는 방법이 있습니까?UICollectionViewCell에서 UIView를 움직이면 스크롤 기능이 차단됩니다.

iOS 용 Reeder.app에서 본 슬라이딩을 복제하려고합니다.

+0

안녕하세요, 제안 된 솔루션이 효과가 있는지 확인할 수 있습니까? 그것은 다른 사용자를 위해 작동하는 것 같았다. 감사! – batkru

답변

8

터치에서 활성화 된 UIPanGestureRecognizer은 더 이상 응답 체인을 통해 전달되지 않으므로 UICollectionView이 더 이상 터치를받지 못하기 때문입니다.

의 대리인으로 UIView을 설정하고 UIPanGestureRecognizer의 활성화 여부를 결정할 수 있습니다.

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer; 

당신이 아래의 코드 예를 들어 뷰의 y 축에 속도가 x 축의 속도보다 큰 경우 활성화하지 말 것을 말할 것이다 : 당신은 당신의 UIView에 대리인의 방법을 구현해야

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ 

    UIPanGestureRecognizer *recognizer = (UIPanGestureRecognizer *)gestureRecognizer; 
    CGPoint velocity =[recognizer velocityInView:self]; 
    if(abs(velocity.y)>=(abs(velocity.x))){ 
     return NO; 
    }else return YES; 

} 

호프 (따라서 아래 UICollectionView에 터치를 보내는)이 유용하다.

+0

완벽하게 작동합니다! 감사합니다 – n8tr

+0

내 문제가 해결되었습니다, 감사합니다! –

+0

위대한 작품. 내 view 컨트롤러에서 작동하도록 "velocityInView : self.view"로 변경해야했습니다. 또한 이것은 UICollectionViewCell의 팬 제스처를위한 것이므로 collectionView에서 셀을 만들 때 델리게이트를 설정하는 것이 편리했습니다. cellForItemAtIndexPath : – Indi