2013-08-28 1 views
2

특정 제스처가 실패하여 다음 가능한 제스처가 인식되도록 할 수 있습니까?스 와이프 및 팬 제스처 오버랩

UISwipeGestureRecognizer *swipeLeft = [initialize UISwipeGestureRecognizer... @selector(handleSwipe:)] 

swipeLeft = UISwipeGestureRecognizerDirectionLeft; 

swipeLeft.delegate = self; 

UIPanGestureRecognizer *pan = [initialize UIPanGestureRecognizer... @selector(handlePan:)] 

pan.delegate = self; 

[pan requireGestureRecognizerToFail:swipeLeft]; 

위의 코드는 슬쩍 왼쪽이 장치가 인식되지 않는 경우, 팬 제스처 처리기가 사용됩니다 상태 :

샘플 조각을보고, 더 구체적으로.

내 질문에 : swipeLeft가 handleSwipe에서 확인한 일부 기준에 따라 의도적으로 실패 (장치에서 스 와이프 왼쪽 터치로 인식 된 후)하고 대신 팬 제스처가 터치 입력을 처리하도록 할 수 있습니까?

감사합니다. 여기에 UIGestureRecognizerDelegate 프로토콜 밖으로

답변

11

확인 : 특히

https://developer.apple.com/library/ios/documentation/uikit/reference/UIGestureRecognizerDelegate_Protocol/Reference/Reference.html

gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:

방법은 유용 할 수 있습니다. 이 메서드에서 YES 만 반환하면 두 동작을 동시에 인식 할 수 있으므로 두 동작을 모두 제대로 인식 할 수 있습니다.

+0

을 나에게 내가 목표로하고 원하는 동작을 제공하지 않습니다 동시 제스처를 인식. 왼쪽으로 스 와이프하여 UIView를 한 위치에서 다른 위치로 이동시키고 팬 제스처는 터치 패닝 및 속도를 기반으로 이동합니다. 감사. – rgb

+0

팬 인식기가 터치로 뷰를 움직일 수있게하는 것처럼 들리지만 스 와이프가 감지되면 스 와이프 동작을 대신하여 팬이 작동을 멈추게하는 플래그를 설정할 수 있습니다. 당신이하려는 일을 성취한다고 생각하십니까? – Eric

+0

그게 좋은 생각이고 내가 뭘 하려는지, 작성하거나 자신의 touchesBegan, 무시, 끝내 메서드를 무시하고 현재 제스처를 중지하고 다음 제스처 동작을 전달하지 않고도 간단한 구현이 무엇입니까 달성하려고 무엇입니까? 감사. – rgb

0

당신은 할 수 없어, 당신은 팬 제스처 구현 다른 처리기가 가정 :

-(void)handleSwipe:(id)sender { 

    if //criteria is met to ignore left swipe 
    { 
     [self handlePan:self]; 
    } 
} 

-(void)handlePan:(id)sender { 

    // handle pan gesture here 

} 
+0

이것은 작동하지만 handlePan (touchesBegan, Moved, Endobed는 멍청한 것에 대해 조금 복잡하다.)의 실제 구현은 실제로 뷰 컨트롤러에서 사용되는 다른 라이브러리에있다. 감사. – rgb