2016-10-18 9 views
0

2本指のピンチ/回転/パンニングを許可し、シングルフィンガーパンニングを拒否する必要があります。シングルタッチパンニングを拒否するMKMapView

は、私はこれを達成するための方法をいくつか試してみた:

for (UIPanGestureRecognizer *pan in mapView.gestureRecognizers) { 
    if ([pan isKindOfClass:[UIPanGestureRecognizer class]]) { 
     if ([pan minimumNumberOfTouches] < 2) { 
      [pan setMinimumNumberOfTouches:2]; 
     } 
    } 
} 

しかし、これではない作品を。たぶん何らかの種類のUIGestureRecognizerの依存関係がありませんか?任意の外側のスクロールを可能にし

self.twoFingerPan = [[UIPanGestureRecognizer alloc] init]; 
self.twoFingerPan.maximumNumberOfTouches = 1; 
self.twoFingerPan.delegate = self; 
[self addGestureRecognizer:self.twoFingerPan]; 

... 

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { 
    if (gestureRecognizer == self.twoFingerPan && 
     [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && 
     (otherGestureRecognizer.view == self.mapView || 
     otherGestureRecognizer.view.superview == self.mapView)) { 
     return YES; 
    } 
    return NO; 
} 

そしてさらに:

答えて

1

ちょうど素敵な解決策を見つけた

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { 
    if (gestureRecognizer == self.twoFingerPan && 
     [otherGestureRecognizer.view isKindOfClass:[UIScrollView class]]) { 
     return YES; 
    } 
    return NO; 
} 
関連する問題