2011-08-05 5 views
0

서브 클래 싱 한 UITableViewCell을 사용자 지정 드로잉을하고 있습니다. 여기에는 사용자 상호 작용이 필요한 OpenGL ES 2.0 컨트롤이 있습니다 ... 이제 컨트롤을 수평으로 끌기 시작하면 컨트롤이 응답하지만 수직 방향으로 가면 바로 테이블 뷰의 뷰포트가 움직입니다. 이 상호 작용을 UITableView로 이동하지 않고 UITableViewCell에서 내 UIView로 제한하는 방법은 무엇입니까?사용자 상호 작용 전파 전파 캡처 및 중지 UITableViewCell

답변

1

당신이 시도 할 수 UITableView를 서브 클래스 화하고 다음 메소드를 오버라이드하십시오.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 

    // if user tapped on your custom view, disable scroll   
     self.scrollEnabled = NO; 
    // end if 

    [super touchesBegan:touches withEvent:event]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    self.scrollEnabled = YES; 
    [super touchesEnded:touches withEvent:event]; 
} 

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { 
    self.scrollEnabled = YES; 
    [super touchesCancelled:touches withEvent:event]; 
} 
1

UITableView에 대한 사용자 상호 작용을 막을 수는 없다고 생각합니다. 모든 하위 뷰에 영향을 미치기 때문입니다.
UITableView 상호 작용을 사용하려는 메서드로 보내려고합니다.

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 
    [MyClass myScrollDidStartMethod]; 
} 

또는 사용 - (무효) scrollViewDidScroll : (있는 UIScrollView *) 보낸 사람을 당신이 스크롤 방향을 얻기 위해 보낸 사람의 contentOffset에서 작업 할 수 있도록 (이에 대한 자세한 정보를 원하시면 this post 참조)

+0

감사합니다. 서브 클래 싱이 필요 없습니다. –