我正在使用启用了iOS 6.1 iPhone app
的{{1}},这将使用ARC
来跟踪设备位置。
更新
我有CLLocationManager
来实现DestinationViewController
。它创建CLLocationManagerDelegate
并进行设置。我已将CLLocationManager
导入我的项目。
我尝试了很多调试,可以看到CoreLocation framework
已创建且没有错误。但问题是CLLocationManager
是[CLLocationManager authorizationStatus]
在kCLAuthorizationStatusNotDetermined
之前和之后的。
因此,没有提示要求为此应用程序使用位置服务的权限。因此,这种方法永远不会被解雇。
[self.locationManager startUpdatingLocation];
我也尝试在网上搜索几个小时来寻找类似的例子,但没有运气。 DestinationViewController的代码发布在下面。
接口
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:
(NSArray *)locations
实施
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface DestinationViewController : UIViewController <CLLocationManagerDelegate>
答案 0 :(得分:7)
您的代码应该有效。
确保您的应用程序有权使用位置服务。
您可以使用以下方法检查代码中的授权状态
+ (CLAuthorizationStatus)authorizationStatus
修改
kCLAuthorizationStatusNotDetermined很可能是由于禁用了位置服务引起的。您应该首先检查位置服务状态。代码应该是这样的
if([CLLocationManager locationServicesEnabled]) {
// Location Services Are Enabled
switch([CLLocationManager authorizationStatus]) {
case kCLAuthorizationStatusNotDetermined:
// User has not yet made a choice with regards to this application
break;
case kCLAuthorizationStatusRestricted:
// This application is not authorized to use location services. Due
// to active restrictions on location services, the user cannot change
// this status, and may not have personally denied authorization
break;
case kCLAuthorizationStatusDenied:
// User has explicitly denied authorization for this application, or
// location services are disabled in Settings
break;
case kCLAuthorizationStatusAuthorized:
// User has authorized this application to use location services
break;
}
} else {
// Location Services Disabled
}
答案 1 :(得分:-14)
我终于解决了!我的代表没有正确设置。 而不是做:
self.locationManager.delegate = self;
我把它改为:
[self.locationManager setDelegate:self];
现在我的委托方法被解雇了。
感谢那些帮助过的人!