4

MKUserTrackingModeFollowWithHeadingiOS 6 で2 つの問題を解決しようとしています。

  • MKUserTrackingModeFollowWithHeadingMKUserTrackingModeFollow一時的に機能しますが、特にズームレベルが高い場合は、ぎくしゃくしてほとんどすぐに戻ります.

  • を繰り返し変更すると、アプリがクラッシュすることがありMKUserTrackingModeますEXC_BAD_ACCESS。これを再現するのは難しいですが、繰り返し発生しています。

これを引き起こしている可能性のあるものについて何か考えはありますか? バグのように感じますが、Apple 独自の「マップ」アプリはこの動作を示しません。

問題を切り分けるために、 と を使用してシングル ビュー アプリケーションを作成しMKMapView( UIToolbar.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
4

2 に答える 2

4

これはMapKitのバグです。Find My Friends アプリなどの MapKit を使用して、Apple マップでも確認できます。Apple Maps アプリは (少なくとも同じバージョンではない) MapKit を使用していないため、このバグの影響を受けないことに注意してください。

EXC_BAD_ACCESSMapKit で散発的なクラッシュも見られます。実際、MapKit 関連のクラッシュは、私のアプリのクラッシュの大部分を占めています。:(

于 2013-06-05T19:08:12.570 に答える
3

また、特に高ズーム レベルでは、MKUserTrackingModeFollowWithHeading が一時的に機能し、ほとんどすぐに MKUserTrackingModeFollow に変わることにも気付きました。

私は試した

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

しかし、これは、MKUserTrackingModeFollowWithHeading に変更した直後に何かが MKUserTrackingModeFollow に戻るため、永久ループを作成します。追跡モードを MKUserTrackingModeFollow に変更し続ける原因がわからないので、本当に面倒です。

私の答えが役に立たなかったことを申し訳ありませんが、問題を確認するためにここに投稿しました。

于 2013-04-03T16:48:56.317 に答える