【问题标题】:MKMapView Not Calling regionDidChangeAnimated on PanMKMapView 没有在 Pan 上调用 regionDidChangeAnimated
【发布时间】:2012-02-02 22:27:13
【问题描述】:

我有一个带有 MKMapView 和代码的应用程序,每次地图更改位置时都会调用该代码(在 regionDidChangeAnimated 中)。当应用程序最初加载时,在显式更新地图坐标的平移(滑动)、捏合、点击和按钮上调用 regionDidChangeAnimated。加载其他视图并返回地图后,仅在点击和显式更新地图的按钮时才调用 regionDidChangeAnimated。平移地图和捏不再调用 regionDidChangeAnimated。

我看过这个stackoverflow post 并没有解决这个问题。 devforumsiphonedevsdk 上的论坛帖子也不起作用。有谁知道是什么导致了这个问题?我没有向 MKMapView 添加任何子视图。

【问题讨论】:

    标签: ios mkmapview swipe tap pan


    【解决方案1】:

    我最初不想这样做,但到目前为止它似乎没有任何问题(取自有问题的 devforums 帖子):

    将 UIGestureRecognizerDelegate 添加到您的标题中。 现在添加版本号检查...如果我们在 iOS 4 上,我们可以这样做:

     if (NSFoundationVersionNumber >= 678.58){
    
          UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGestureCaptured:)];
          pinch.delegate = self;          
          [mapView addGestureRecognizer:pinch];
    
          [pinch release];
    
          UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureCaptured:)];
          pan.delegate = self;
          [mapView addGestureRecognizer:pan];
    
          [pan release];
     }
    

    添加处理手势的委托方法:

    #pragma mark -
    #pragma mark Gesture Recognizers
    
    - (void)pinchGestureCaptured:(UIPinchGestureRecognizer*)gesture{
        if(UIGestureRecognizerStateEnded == gesture.state){
             ///////////////////[self doWhatYouWouldDoInRegionDidChangeAnimated];
        }
    }
    
    - (void)panGestureCaptured:(UIPanGestureRecognizer*)gesture{
    
        if(UIGestureRecognizerStateEnded == gesture.state){
            ///////////////////[self doWhatYouWouldDoInRegionDidChangeAnimated];
        }
    }
    
    -(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
       return YES;
    }
    
    -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:   (UITouch *)touch{
        return YES;
    }
    
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer   shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer    *)otherGestureRecognizer{
        return YES;
    }
    

    【讨论】:

    • 是的,我在使用 iOS 4 和 iOS 5 时遇到了问题,并且两者都适用。
    猜你喜欢
    • 2011-12-25
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多