2013-10-21 7 views
0

UIPanGestureRecognizer는 화면 위쪽의 "데드 존"내부에서 드래그가 시작되면 이동하지 않습니다. 이는 알림 센터에서 발생했을 가능성이 큽니다.아래 그림과 같이 UIScrollView UIPangestureRecognizer 화면의 위쪽 가장자리에있는 데드 존

enter image description here

는 touchesMoved : withEvent : 방법은 그러나 전화를받을 않기 때문에,이 지역에서 인정 팬 제스처를 얻을 수있는 방법이 있어야한다.

누구도이 문제를 겪었습니까? 아직 해결 방법이 있습니까? 어떤 도움을 주셔서 감사합니다!

답변

0

문제를 해결했다. touchesMoved : withEvent : 다음과 같이 구현해야합니다.

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches.allObjects objectAtIndex:0]; 
    CGPoint location = [touch locationInView:self]; 
    CGPoint previousLocation = [touch previousLocationInView:self]; 
    CGPoint contentOffset = self.contentOffset; 

    contentOffset.x -= location.x - previousLocation.x; 
    [self setContentOffset:contentOffset animated:NO]; 
} 
+0

같은 문제를 만났습니다. 문제가 해결 될 수도 있습니다. 그러나 정상적인 반응을 위해 불감 대를 위해 최선을 다하고 있습니다. 어떤 사람이 해결책을 찾을 수 있기를 바랍니다. – satgi

0

화면의 위쪽 가장자리에는 여러 개의 제스처 인식기가 간섭 할 수 있습니다. 간섭을 일으키는 다른 제스처 인식기는 일부 UIElement가있는 시스템에 추가 될 수 있습니다.

제스처 인식기 대리인에 UIGestureRecognizerDelegate을 구현하려고합니다.

특히이 방법

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 

    NSLog(@"1st recognizer class: %@ ; 2nd recognizer class: %@", NSStringFromClass([gestureRecognizer class]), NSStringFromClass([otherGestureRecognizer class])); 

    return YES; 

} 

https://developer.apple.com/library/ios/documentation/uikit/reference/UIGestureRecognizerDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIGestureRecognizerDelegate/gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer는 :

+0

감사합니다. 이 예를 포함하여 모든 대리자 메서드를 구현했습니다. 나는 또한 모든 superviews를 얻고 그들의 제스처 제거를 시도했다 인식 자, 어떤 성공도없이. 알림 센터 인식기에 액세스 할 수없는 것처럼 보입니다. – Thomas

+0

좋아, 로깅과 함께 나는 "UIScrollViewDelayedTouchesBeganGestureRecognizer"가 문제를 일으키는 것으로 밝혀졌습니다. 이것은 하나의 반환 값을 무시하는 것 같다. – Thomas