MKMapViewDelegate mapView:didUpdateUserLocation:在iOS5上未调用的方法

时间:2011-10-14 09:22:21

标签: ios mkmapview ios5 mkmapviewdelegate

MKMapViewDelegate mapView:didUpdateUserLocation:在5.0模拟器上运行时未调用方法,即使在设备设置中给出了所有位置权限。

使用4.3它可以正常工作。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

在重构ARC之后我得到了同样的东西。

首先,我在viewDidLoad中有以下代码;

CLLocationManager *lm =[[CLLocationManager alloc] init];
lm.delegate = self;
lm.desiredAccuracy = kCLLocationAccuracyBest;
[lm startUpdatingLocation];

我在de headerfile中执行了以下操作

@interface ViewController : UIViewController <CLLocationManagerDelegate>
{
CLLocationManager *locationManager;
}

@property(nonatomic, strong)CLLocationManager *locationManager;

@synthesize locationManager;

我在viewDidLoad

中更改的代码
locationManager =[[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];

答案 1 :(得分:0)

检查“setUserTrackingMode:animated:”和“userTrackingMode”。两者都是iOS5中的新功能。我遇到了类似的问题,并通过在setUserTrackingMode函数中设置MKUserTrackingModeFollow来修复它。我认为默认跟踪模式是MKUserTrackingModeNone,只调用一次mapView:didUpdateUserLocation。

如果您的问题是从未调用过mapView:didUpdateUserLocation,那么请查看新xcode中的选项,在控制台输出正下方有一个图标,如ipad中的gps图标,可让您模拟一个位置。

答案 2 :(得分:0)

我知道这是一个老话题。无论如何我会回答,也可能对其他人有帮助。

我遇到了与iOS 6类似的问题。我可以通过将mapview委托设置为self来解决这个问题。

像这样:

[mapView setDelegate:self];

确保您的ViewController.h具有MKMapViewDelegate:

@interface ViewController : UIViewController <CLLocationManagerDelegate, MKMapViewDelegate>