-->

iOS 6的地图问题MKUserTrackingModeFollowWithHeading(iOS

2019-08-18 01:57发布

我试图解决两个问题MKUserTrackingModeFollowWithHeading在iOS 6中:

  • MKUserTrackingModeFollowWithHeading工作简单,但它是紧张不安,并返回到MKUserTrackingModeFollow几乎立即,特别是在高变焦的水平。

  • 该应用程序崩溃偶尔当反复改变MKUserTrackingMode :我得到EXC_BAD_ACCESS在主线程,没有进一步的信息。 这是难以重现,但它的事件屡屡发生。

上什么可能导致这个有什么想法? 这感觉就像一个bug,但苹果自己的“地图”应用程序不会出现此行为。

为了隔离问题,我已经创建了一个带有单一视图应用MKMapViewUIToolbar (在的.xib成立),到我加入一个MKUserTrackingBarButtonItem 。 所述UIViewController充当<MKMapViewDelegate> 下面是完整的实现代码:

#import "ViewController.h"

@implementation ViewController

@synthesize mapView, toolbar;

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Add MKUserTrackingBarButtonItem to toolbar
    MKUserTrackingBarButtonItem *trackButton = [[MKUserTrackingBarButtonItem alloc] initWithMapView:self.mapView];
    [toolbar setItems:[NSArray arrayWithObjects:trackButton, nil] animated:YES];
}


- (void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated
{
    // Log MKUserTrackingMode change
    NSString *modeType = (mode == 0) ? @"None" : ((mode == 1) ? @"Follow" : @"FollowWithHeading");
    NSLog(@"MKUserTrackingMode changed to: %@", modeType);
}

@end

Answer 1:

这是一个错误的MapKit。 它也可以用MapKit可以观察到在苹果地图,如查找好友的应用程序。 需要注意的是,苹果地图应用没有使用MapKit(至少不是同一版本),因此它不受此漏洞。

我也确实看到零星EXC_BAD_ACCESS在MapKit崩溃。 事实上,MapKit相关的崩溃占绝大多数我的应用程序的崩溃。 :(



Answer 2:

我还注意到,MKUserTrackingModeFollowWithHeading短暂工作,它几乎立即变为MKUserTrackingModeFollow,特别是在高变焦的水平。

我试过了

- (void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated {
    if (mapView.userTrackingMode != MKUserTrackingModeFollowWithHeading) {
        [mapView setUserTrackingMode:MKUserTrackingModeFollowWithHeading];
    }
}

但是这创造了自右后我改变MKUserTrackingModeFollowWithHeading,东西变回MKUserTrackingModeFollow一个永远循环。 这真是烦人,因为我不知道是什么在不断变化的跟踪模式MKUserTrackingModeFollow。

对不起,我的答案是没有用的,但我这里贴以确认问题。



文章来源: iOS 6 Map problems with MKUserTrackingModeFollowWithHeading