2013-01-06 3 views
3

UICollectionView으로 격자 레이아웃을 만들지 만, 이미지를 누르면 스크롤이 작동하는 것 같습니다. 빈 공간을 누르면 뷰가 스크롤되지 않습니다. 배경과 이미지 모두에있는 프레스에 대해 스크롤링을 활성화하려면 어떻게합니까?항목 사이에 빈 공간을 드래그하면 UICollectionView가 스크롤되지 않는 이유는 무엇입니까?

예를 들어, 아래의 스크린 샷에서 스크롤은 흰색 사각형을 누르면 작동하지만, 사각형 사이의 검정색을 누르면 작동하지 않습니다.

나는 내가 어떤 스크롤 특정 코드를 가지고 있다고 생각하지 않지만, 추가 나를 원한다면 특정 코드 샘플을 알려주세요.

+0

동일한 문제가 있고 대답 1이 작동하지 않습니다. –

답변

1

UICollectionViewbackgroundColor 또는 backgroundView을 설정하면보기의 아무 곳이나 터치하면 스크롤됩니다 (예제의 흰색 사각형 사이 포함).

+0

이 대답은 저에게 효과적이지 않았습니다. –

0

마지막으로이 문제를 해결했습니다. 내가 한 일은 다음과 같습니다.

UICollectionViewCell에 userInteractionEnabled = YES가있어서 문제가 발견되었습니다. 이 값을 NO로 변경하려고 시도하고 스크롤이 작동하기 시작했습니다. UICollectionViewCells가 터치를 가로 채고 Collection보기 스크롤이 작동하지 않았습니다.

그러나 부수적 인 문제가있었습니다. 일단 셀을 건드렸 으면 didSelectItemAtIndexPath 메서드가 호출되지 않았습니다.

내 솔루션은 UITapGestureRecognizer를 추가하여 셀에 손이 닿았는지 여부를 감지하고이 메서드를 수동으로 호출합니다.

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)]; 
[self.collectionView addGestureRecognizer:singleTap]; 

을 그리고 여기 singleTapGestureCaptured 방법 :

가있는 viewDidLoad 방법이 추가

- (void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture 
{ 
    CGPoint touchPoint=[gesture locationInView:self.collectionView]; 
    NSIndexPath* indexPath = [self.collectionView indexPathForItemAtPoint:touchPoint]; 
    [self collectionView:self.collectionView didSelectItemAtIndexPath:indexPath]; 
} 

희망이 당신을 도울!

관련 문제