3

UIScrollViewUICollectionViewCell 안에 올바르게 작동하도록하려고합니다.사용자 지정 UICollectionViewCell의 UIScrollview가 작동하지 않습니다.

사용자 정의 셀은 xib 파일을 통해로드되며 UICollectionViewCell의 서브 클래스입니다. UICollecitonView이 셀에 어떤 접촉도 전달하지 않는 것처럼 보이기 때문에 버튼과 제스처 인식기와 같은 다른 컨트롤이 작동하는 데 문제가 있었지만 UICollectionView 자체의 제스처 인식기를 사용하여 문제가 발생했습니다. 내가 가진 나머지 문제는 UIScrollViews입니다 ...

UICollectionView은 가로로 스크롤하고 셀의 UIScrollView은 세로로 스크롤합니다. UIPanGestureRecognizer을 사용하여 스크롤하려고 시도했지만 스크롤 할 수있는 기능이 비활성화되어있는 것으로 보입니다.

아무도 생각이 없습니까?

편집 : 알았습니다!

그래서 iOS6 이전에 사용했던 이전 타사 라이브러리에서 컬렉션보기로 변환했습니다. 문제는 우리가 셀에 사용하고있는 xib 파일에 문제가 있음을 알 수 있습니다. 이전의 라이브러리에서는 셀이 UIView의 서브 클래스였습니다. 클래스를 서브 클래스 UICollectionViewCell으로 변경하고 사용자 정의 클래스를 업데이트했습니다. 이것이 충분하지 못했던 것으로 밝혀졌습니다. 접촉을 셀에 전달하려면 실제로 객체 라이브러리에서 새로운 UICollectionViewCell을 드래그해야했고, 모든 하위 뷰를 복사하고 IBOutlets을 다시 연결해야했습니다. 이것 후에, 그것은 일했다!

+0

UIGestureRecognizerDelegate를 살펴 보았습니까? –

+0

필자는 gestureRecognizer : shouldRecognizeSimultaneouslyWithGestureRecognizer :를 사용하여 시도했지만 추가 팬 인식기가 기본 스크롤 동작을 재정의합니다. 사용해야 할 다른 것이 있습니까? – user2157629

답변

-3

UICollectionViewCell의 UISCrollView에는 문제가 없습니다. StoryBoard를 사용하면 OK를 스크롤 할 수 있습니다. UIScrollView는 UICollectionViewCell을 오버레이하므로, didSelect는 ScrollView 외부와 셀 안쪽에서 탭할 때만 작동합니다 (scrollView.frame < cell.frame).

당신은 탭 또는 다른 제스처를 구현하려면, 단지

로 awakeFromNib

에있는 UIScrollView에 추가 참조 코드 :

https://github.com/lequysang/github_zip/blob/master/CollectionViewWithCellScrollViewStoryBoard.zip

0

내가 스크롤의 확인 크기 조정을하여 내 코드에서 이것을 해결 뷰는 주 스레드에서 발생합니다.

내 콜렉션 뷰는 블록 호출을 사용하여 선택된 셀을 새로 고치는 nsfetchedresults 컨트롤러를 사용하고 있습니다. 셀을 처음 선택하면 스크롤 뷰가 스크롤되지 않습니다. 그러나 다른 셀을 클릭하고 뒤로 클릭하면 정상적으로 작동합니다. 셀의 초기로드는 크기 계산처럼 보였을 수 있습니다. 메인 스레드에서 동작에 영향을 미치기 위해 필요한 곳이 아닐 수도 있습니다.

-(UICollectionViewCell *) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CustomCell" forIndexPath:indexPath]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     // resizeScrollViewMethod should be where scrollview content size > scroll view frame. 
     [cell resizeScrollViewMethod]; 
    }); 
    return cell; 
} 

- (void) resizeScrollViewMethod { 
    //Do your scrollview size calculation here 
} 
관련 문제