2011-01-05 3 views
4

테이블의 바닥 글에 UIPickerView가 있습니다 (이 테이블에서 "페이지 매김"스타일 요청을 발행 할 예정입니다) - 피커는 사용할 수있는 페이지를 나열합니다. 큰 데이터 세트를 탐색 중이며 사용자가 데이터의 "페이지"로 바로 넘어갈 수있게하십시오.)UITableView.tableFooterView 내부의 UIPickerView가 끌기를받지 못합니다.

내 선택기가 도청을받습니다. 선택한 피커가 아닌 피커의 행을 탭하면 피커의 가운데 공간으로 굴립니다. 하지만 피커에서 손가락을 드래그하면 피커 내용이 아니라 TABLE을 스크롤합니다.

필자의 tableFooterView에 UIView 하위 클래스를 설치하여 터치를 잡을 수 있었는지 알아볼 수는 있었지만 선택할 수는 없었습니다. UIView 하위 클래스의 -touchesBegan을 실제로 피커에서 꺼냅니다. 그러나 피커 자체에있는 것들은 아닙니다.

답변

8

다음은 작동이 끝난 이유입니다.

내 테이블을 UITableView (PickerSensitiveUITableView)의 하위 클래스로 만들었습니다. 이제 터치는 피커의 경계 내에서 발생하면

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    UIView* result = [super hitTest:point withEvent:event]; 

    if ([result.superview isKindOfClass:[UIPickerView class]]) 
    { 
      self.scrollEnabled = NO; 
    } 
    else 
    { 
      self.scrollEnabled = YES;  
    } 
    return result; 
} 

는 jQuery과의 스크롤 기능을 해제 :

나는이 방법을 구현 (테이블에 실제로 피커!).

더 일반적인 해결책은 UIScrollView에서 카테고리로 사용하는 것입니다. UITableView가 하위 클래스 인 UIScrollView와 마찬가지로 테이블에 문제가 없습니다 ...

+0

해당 메소드가 무시된다는 보장은 없습니다. – Pacu

+1

굉장한 솔루션, 영리하고 간단합니다. 가로 스크롤보기에있는 테이블 뷰에서 스 와이프를 삭제할 수 있도록 허용했습니다. 고마워. – Jukurrpa

+0

훌륭합니다, 고마워요, 댄. – DrMickeyLauer

관련 문제