2012-12-07 3 views
13

각 셀에 UICollectionView이 포함 된 UITableView이 있습니다.UICollectionView가 UITableVIew에 중첩 된 경우 선택이 불가능합니다.

나는 그러나 내가 UICollectionView에서 UICollectionViewCell을 선택할 수 없습니다, 수직 UITableView 스크롤 수평으로 중첩 된 UICollectionView을 스크롤 할 수 있습니다.

UITableView에서 선택을 사용할 수 없으며 UICcollectionView에서 활성화됩니다 (기본 상태).

UICollectionView'scollectionView:didSelectItemAtIndexPath:은 단순히 호출되지 않습니다.

+0

UICollectionViewDelegate가 설정되어 있습니까? – skladek

+0

콜렉션 뷰의 셀에 조그만 반응 (예 : 조도 조절 등)이 나타 납니까? 어쩌면'UITableView'의 셀이 콜렉션 뷰의 탭을 취소하고있을 수도 있습니다. –

+3

이 John에 대한 해결책을 찾았습니까? –

답변

-1

첫 본능 두 뷰의 제스처 인식기

구체적으로 충돌 할 수 있다는 것이다, 수돗물 용 jQuery과 GRS는 수신 터치

0

내가 수 있었던 방법에서 UICollectionView GRS 방지 될 수있다

스위프트

:이 문제를 해결하기 위해 수동으로 탭을 처리하기보다는 호출되지 않습니다되는 didSelectRowAtIndexPath에 의존하는 셀에 탭 제스처 인식기를 추가했다 이제 셀을 처리 할 수 ​​

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cellTapped:)]; 
tapRecognizer.numberOfTapsRequired = 1; 
[cell addGestureRecognizer:tapRecognizer]; 

let tapRecognizer = UITapGestureRecognizer(target: self, action: "cellTapped:") 
tapRecognizer.numberOfTapsRequired = 1 
cell.addGestureRecognizer(tapRecognizer) 

오브젝티브 C는 cellTapped: 방법에 도청되고, 당신은 tapRecognizer.view를 통해 도청 된 셀에 대한 참조를 얻을 수 있습니다.

-1

첫 번째 plz에서 필요한 데이터 소스와 델리게이트를 제공했는지 확인하십시오. 그런 다음 특정 수의 테이블보기 셀에서 컬렉션보기를 사용하는 경우 프로토 타입 셀에 직접 넣을 수 있습니다. 셀에 적절한 한도 (폭)가 있는지 확인하십시오.

-3

이것은 전혀 문제가되지 않습니다. 맞춤 제스처 인식기가 필요하지 않습니다. tableview의 선택을 해제 할 필요가 없습니다. 스토리 보드 또는 코드에있는 tableview

  1. 설정하고 데이터 소스를 설정하고 tableviewcell가 해당 collectionview에 대한 참조를 가져 dequeueing 후 cellforrowatindexpath에서
  2. 을 위임하고합니다 (collectionviews)을 설정합니다

    에 확인 데이터 소스 및

  3. 가 tableviews 및 collectionviews 위임 didselect 메소드를 구현하고 작동보고 자신의 통화를 로그 아웃 위임

방금 ​​문제가 없는지 확인하기 위해 작은 예제 프로젝트를 구현했습니다. 아직 작동하지 않는다면 업로드 할 수 있습니다!

행운을 빈다!

0

나는 당신과 나의 해결책을 공유 할 것 같았다 그래서 나는이 일을 얻었다.

UITableView 및 중첩 UICollectionView에 필요한 대의원 및 데이터 소스를 설정 한 후이

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    ... 
    [tableViewCell bringSubviewToFront:tableViewCell.yourCollectionView]; 
    return cell; 
} 

처럼 UICollectionView 첫 번째 선택보기이 대리인

를 통해 선택 년대 UICollectionView 제일 먼저 할 것입니다 수 있습니다
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath; 

뷰의 다른 부분은 대리인

UITableView 을 사용하여 선택 될
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

희망이 있습니다.

-1

tableViewdelaysContentTouches을 비활성화하고 컬렉션보기의 delegate이 올바르게 설정되어 있는지 확인하십시오.

관련 문제