MKMapView上的UIPanGestureRecognizer?

Jak*_*ubM 36 cocoa-touch objective-c mkmapview uigesturerecognizer

当用户使用地图视图移动时,我想添加一些逻辑,即他进行平移触摸.但是当我添加手势识别器并且我想记录触摸时,没有任何反应.当我在另一个视图控制器中尝试它并将识别器添加到控制器的视图时,它可以正常工作.

这是我的代码(map视图是应用程序委托的属性,因为即使它不可见,我还需要用它做一些其他的事情):

- (void)viewDidLoad
{
    ...
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(showPan)];
    [appDelegate.mapView addGestureRecognizer:panGesture];
    [panGesture release];
}

- (void)showPan
{
    NSLog(@"pan!");
}
Run Code Online (Sandbox Code Playgroud)

我使用最新的iOS 4.2.1

谢谢你的建议.

Jak*_*ubM 134

好吧,因为没有人知道,我不得不花一个Apple技术支持咨询它.; O)

因为MKMapView显然有自己的识别器来与用户交互,所以你必须遵守UIGestureRecognizerDelegate协议并实现(BOOL)gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:如下:

- (void)viewDidLoad
{
    ...
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(showPan)];
    panGesture.delegate = self;
    [appDelegate.mapView addGestureRecognizer:panGesture];
    [panGesture release];
}

- (void)showPan
{
    NSLog(@"pan!");
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {   
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

然后它就像一个魅力.

  • +1,因为你甚至要求技术支持 (7认同)