如何在用户选择允许后处理启用位置服务?

JLa*_*_cy 2 iphone location cllocationmanager ios

基本上,当我的应用程序第一次启动时,会出现"启用位置服务"提示.当用户点击"允许"时,我想开始更新用户位置并放大该区域.

在我的viewDidLoad中,我启动了位置管理器,但不幸的是,在用户有机会点击"允许"之前加载了视图.在第二次启动应用程序时一切正常,因为用户已经允许定位服务

我的问题是如何捕获点击允许的事件,以便我可以运行代码来放大一个区域?

我尝试过使用-(void)locationManager:didChangeAuthorizationStatus:但是当用户点击允许时它似乎没有调用此委托方法.

希望这是有道理的我对此非常新.

小智 5

据我所知,您不能,但您不必捕获此事件,因为在获得此位置的坐标之前,您将无法缩放到特定位置.您的应用程序在第二次启动时工作正常,因为它使用第一次启动时的缓存位置数据.因此,您需要在收到新的有效坐标后运行缩放代码.如果使用CLLocationManager,请查看

– locationManager:didUpdateToLocation:fromLocation: 
Run Code Online (Sandbox Code Playgroud)

在其代表中.如果用户拒绝使用位置服务,则您的代表将收到该服务

locationManager:didFailWithError:
Run Code Online (Sandbox Code Playgroud)

有相应的错误.

如果使用MKMapKit,则比在MKMapView中委托实现方法

– mapViewWillStartLocatingUser: 
Run Code Online (Sandbox Code Playgroud)

专注于当前的用户位置.处理拒绝工具

– mapView:didFailToLocateUserWithError:
Run Code Online (Sandbox Code Playgroud)

指向相应Apple文档的链接:

CLLocationManager

CLLocationManagerDelegate

MKMapViewDelegate