从CLLocationManager授权警报中按下检测按钮

时间:2012-11-12 17:27:23

标签: iphone ios uialertview cllocationmanager

我正在检测用户是否已接受在我的应用中使用位置服务的请求,我在UI中有一个取决于此接受的切换开关。他们第一次切换开关(打开)时,触发了使用位置的请求。我想知道他们在那个警报中按哪个按钮。 (接受或拒绝)现在我只是将其切换并让用户再次按下它(然后检测他们选择了哪个选项)。

这种方式很草率,所以我想知道是否有办法检测这个特定的警报,或者由于它是由操作系统而不是应用程序触发而无法完成?我还没有尝试过,但我想我可以使用UIAlertView委托方法进行通用按钮按下,但希望能有更具体的内容。

更新

我能够通过在触发位置请求时注册通知(并显示授权提示)来实现此功能。应用程序处于非活动状态(很像下拉通知栏)。我只是在应用程序变为活动状态时触发通知,我只能在那里查询授权状态并更新我的UI。如果他们想要动态处理授权状态,我希望这可以帮助其他任何人。

2 个答案:

答案 0 :(得分:5)

无法拦截警报。但是,CLLocationManagerDelegate方法有didChangeAuthorizationStatus方法。这可能是你最接近拦截警报的。

答案 1 :(得分:0)

没有办法明确知道用户选择哪个按钮,因为正如您所说,此警报来自操作系统。但是,您可以了解是否已为您的应用启用了位置服务,并且知道这一点。使用如下方法:

-(BOOL)locationServicesIsEnabled
{
    if (![CLLocationManager locationServicesEnabled] || ![CLLocationManager     authorizationStatus])
    return NO;
return YES;
}