MKMapViewDelegate mapView:didUpdateUserLocation:在5.0模拟器上运行时未调用方法,即使在设备设置中给出了所有位置权限。
使用4.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>