2011-02-12 12 views
0

가로로 스크롤하는 UIScrollView가 있습니다. 나는 또한 내 자신의 핸들러를 수직 스크롤에서 다른 것을하기 위해 두었다. 이건 정말 잘 작동하지만 나는 다음과 같은 코드를 사용하여있는 UIScrollView 위에 몇 가지 버튼을 추가했습니다 :수직 스크롤 오버 감지 가로 스크롤 스크롤 UIScrollView with button

UIButton *catButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[catButton addTarget:self action:@selector(clickCatButton:) forControlEvents: UIControlEventTouchUpInside]; 

버튼의 조치를 클릭 할 때 호출됩니다 :

- (void) clickCatButton:(id) sender 
{ 
    [NSObject cancelPreviousPerformRequestsWithTarget:self]; 
} 

을하지만 내 문제는 이후의 버튼을 가하고 있다는 것입니다 UIScrollView에서 수직 스크롤을 관리하는 코드를 사용합니다.

저는이 문제를 해결하는 가장 좋은 방법에 조금 얽혀 있습니다. 당신의 도움에 대한

덕분에

답변

1

당신이 정말로 드래그가 버튼 일 경우에도 수직 스크롤을 처리하는 경우, 당신이 할 수있는 것은이 경우이다 (다음 응답에있는 UIButton 앞으로 터치 이벤트를 하위 클래스입니다 스크롤 뷰).

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [super touchesBegan:touches withEvent:event]; 
    [self.nextResponder touchesBegan:touches withEvent:event]; 
} 

을하지만 조심하고 : 당신의있는 UIButton 서브 클래스에서, (있는 UIButton의), 다음 예를 들어, 다음 응답으로 이벤트를 전달 슈퍼 클래스 구현을 호출하는 이벤트 처리 방법 (touchesBegan ... 등)을 오버라이드 (override) 버튼의 이벤트 처리와 수직 스크롤에 대한 처리가 함께 진행될 때 발생할 수있는 모든 사례를 생각해보십시오. 예를 들어 드래그가 버튼을 가로 질러가는 경우 (수직 스크롤이 적절하게 작동하면 발생하지 않지만) 버튼은 버튼에서 유효한 '누르기'라고 생각하고 액션 메시지를 발생시킵니다.