iphone – 防止在MKMapView中滚动,当缩放时也是如此

iphone – 防止在MKMapView中滚动,当缩放时也是如此,第1张

概述一旦用户开始捏住MKMapView,scrollEnabled似乎是可破坏的。 您仍然无法用一根手指滚动,但如果在放大和缩小时用两根手指滚动,则可以移动地图。 我努力了 : >对MKMapKit进行子类化以禁用其内的滚动视图。 > Implementing -mapView:regionWillChangeAnimated:执行中心。 >禁用scrollEnabled。 但没有运气。 任何人都可以 一旦用户开始捏住MKMapVIEw,scrollEnabled似乎是可破坏的。

您仍然无法用一根手指滚动,但如果在放大和缩小时用两根手指滚动,则可以移动地图。

我努力了 :

>对MKMapKit进行子类化以禁用其内的滚动视图。
> Implementing -mapVIEw:regionWillChangeAnimated:执行中心。
>禁用scrollEnabled。

但没有运气。

任何人都可以告诉我一个确切的方法,只能放大一个MKMapVIEw,所以中心点总是保持在中间?

解决方法 您可以尝试使用UIPinchGestureRecognizer自己处理捏捏手势:

首先将scrollEnabled和zoomEnabled设置为NO并创建手势识别器:

UIPinchGestureRecognizer* recognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self                                                                                 action:@selector(handlePinch:)];[self.mapVIEw addGestureRecognizer:recognizer];

在识别器处理程序中,根据缩放比例调整MKCoordinateSpan:

- (voID)handlePinch:(UIPinchGestureRecognizer*)recognizer{    static MKCoordinateRegion originalRegion;    if (recognizer.state == UIGestureRecognizerStateBegan) {        originalRegion = self.mapVIEw.region;    }        double latdelta = originalRegion.span.latitudeDelta / recognizer.scale;    double londelta = originalRegion.span.longitudeDelta / recognizer.scale;    // Todo: set these constants to appropriate values to set max/min zoomscale    latdelta = MAX(MIN(latdelta,80),0.02);    londelta = MAX(MIN(londelta,0.02);    MKCoordinateSpan span = MKCoordinateSpanMake(latdelta,londelta);    [self.mapVIEw setRegion:MKCoordinateRegionMake(originalRegion.center,span) animated:YES];}

这可能不会像苹果的实现完全正常,但它应该可以解决你的问题。

总结

以上是内存溢出为你收集整理的iphone – 防止在MKMapView中滚动,当缩放时也是如此全部内容,希望文章能够帮你解决iphone – 防止在MKMapView中滚动,当缩放时也是如此所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1086993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存