【问题标题】:Gesture Reocognizer on MKMapView - iPhoneMKMapView 上的手势识别器 - iPhone
【发布时间】:2011-03-13 09:45:02
【问题描述】:

我有一个 mapView,在我的mapView 中,您可以通过双击、捏合、UIButton(+ 和 -)以及UISlider 进行缩放。 现在...我想识别双击和捏合,以刷新 UISlider 的位置...我使用一个名为 zoomLevel 的 NSInteger 变量来完成此操作。

我尝试了两种方法,但都不起作用:

1)

    UIGestureRecognizer *recognizer;


// taps
recognizer = [[ UITapGestureRecognizer alloc] initWithTarget:self  action:@selector(handleTap)];
tapGR = (UITapGestureRecognizer *)recognizer;
tapGR.numberOfTapsRequired = 2;
tapGR.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:tapGR]; 
[recognizer release];

2)

- (void)touchesEnded:(NSSet *)touches withEvent: (UIEvent *) event{
    UITouch* touch = [[event allTouches] anyObject];
    NSLog(@"2 taps");
    if(touch.tapCount == 2 ){
        NSLog(@"2 taps");
        [self zoomLevelWithMapView:mappa];
    }

有人可以帮助我吗? 有实际例子更好 谢谢。

【问题讨论】:

    标签: iphone mkmapview zooming android-mapview uigesturerecognizer


    【解决方案1】:

    UIGestureRecognizer 识别缩放比例的变化是个坏主意。

    最好使用MKMapView在地图视图显示的区域即将发生变化时调用的委托方法。

    - (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated {
        // detect zoom scale and update slider
    }
    

    使用this answer中的方法检测缩放比例。

    【讨论】:

    • 好主意...我认为您的代码没问题。我明天去测试。对于缩放比例,我研究了 troy brant 的代码,我将使用你的算法的反向版本:troybrant.net/blog/2010/01/set-the-zoom-level-of-an-mkmapview 唯一剩下的问题是我不可能为每个坐标自动设置最大缩放级别,因为最大缩放根据地球的区域而变化......我会发明一些东西。再次感谢。
    • 我不认为这是个好主意。此委托方法与手势事件之间存在一些滞后,这将使其难以为用户使用。
    猜你喜欢
    • 1970-01-01
    • 2013-06-05
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多