2016-08-12 3 views
1

UICollectionView가 있습니다. 해당 셀에는 UICollectionView가 있습니다.다른 셀 내에서 셀 선택 감지

enter image description here

collectionView를 포함하는 셀 (didSelectItemAtIndexPath 통해) 도청 때를 감지 할 수있다. 그러나 셀 안의 collectionView 셀 (개별 태양 아이콘으로 묘사 된 것과 같이)을 두드리면 감지 할 수 없습니다.

모든 사용자 상호 작용이 사용됩니다. 그리고 collectionView as described here의 hitTest를 재정의하려고 시도했습니다.

업데이트 : 간단한 테스트 프로젝트에서이 작업을 다시 시도했지만 정상적으로 작동했습니다. 그러나 어떤 이유로 내 현재 프로젝트에서 가장 안쪽에 중첩 된 collectionView (태양 아이콘 포함)보기 디버거에 나타나지 않습니다.

enter image description here

공지 나는 collectionView 배경이 파란색 만들어 그 세포는 분홍색. 실행중인 앱에 표시 되기는하지만 디버그 된 뷰는 표시되지 않습니다.

+1

UICollectionView가 포함 된 UICollectionViewCell의 대리자를 자체로 설정 했습니까? 즉, UICollectionViewCell의 하위 클래스를 만들고 해당 하위 클래스의 UICollectionView를 설정하고 해당 UICollectionView의 대리자를 UICollectionViewCell로 설정해야한다는 의미입니다. 또한 적중 테스트를 통해 혼란에 빠질 필요가 없습니다. UIResonder 체인에 대규모 개입이 필요한 경우가 거의 없으며 위임을 올바르게 설정하는 것보다 더 멀리 갈 필요가 있는지 의심 스럽습니다. – Loxx

+0

@Loxx 예, 내부 콜렉션 뷰의 델리게이트는 셀이있는 셀로 설정됩니다. – vikzilla

+1

흠, 이전 프로젝트를 시작하고이 문제를 어떻게 해결했는지 봅시다. 나는 곧 여기에 게시 할 것입니다 – Loxx

답변

0

내 셀의 XIB를 사용하여 스토리 보드의 일반 셀을 사용하도록 변경하면이 문제가 발생하지 않습니다.

0

이전에 해봤지만 설명하기가 어려울 것입니다. 짧은 답변은 TapGestures입니다.

그래서 스토리 보드를 통해 tableView를 그렸습니다. 컬렉션 뷰는 프로그래밍 방식으로 추가되었습니다.

TableView cellforRow의 경우 UITableViewCell 하위 클래스를 호출했습니다. 나는 rootView를 델리게이트로 전달했다. 어느 것이 CollectionViewClass를 호출했는지. 여기에서 셀의 실제 항목을 그려서 컬렉션보기에 추가합니다. 이 시점에서 나는 루트 데이트 게이트를 가지고있다. 각 항목에 대해 tapGesture를 추가합니다.

let tap = UITapGestureRecognizer(target: self, action: #selector(viewTapped)) 

그래서 각 항목 이제 내부 탭 제스처를 갖는다. 이제 내보기에서 드로잉을했는데 나는 세포가 도청 된 rootview를 호출 할 수있다.

func viewTapped() { 
    tapDelegate?.milestoneTapped(passID) //tapDelegate = RootView 
} 

나는이 도움이되기를 바랍니다.

+0

가능하면 해결 방법 대신 UICollectionView 대리 메서드를 사용하고 싶습니다.궁극적으로 내장 기능을 사용할 수 없다면이 기능을 사용해 보겠습니다. – vikzilla