请求在iOS 8中使用UnseAuthorization并等待用户响应

iBu*_*Bug 3 cllocationmanager ios

我正在尝试使用获取用户的位置CLLocationManager.这是我的简单代码:

if(IS_OS_8_OR_LATER) {
    if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
        // iOS8+
        // Sending a message to avoid compile time error
        [[UIApplication sharedApplication] sendAction:@selector(requestWhenInUseAuthorization)
                                                   to:self.locationManager
                                                 from:self
                                             forEvent:nil];
        CLAuthorizationStatus authorizationStatus= [CLLocationManager authorizationStatus];

        if (authorizationStatus == kCLAuthorizationStatusAuthorized ||
            authorizationStatus == kCLAuthorizationStatusAuthorizedAlways ||
            authorizationStatus == kCLAuthorizationStatusAuthorizedWhenInUse) {

            [self.locationManager startUpdatingLocation];
        }else{
            [self removeIndicatorView];
            return;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,代码继续执行,即使警报在顶部.我想停止执行,直到用户在更新位置之前按下允许或拒绝.我怎么能这样做?

我不想使用延迟或计时器.

Enr*_*tyo 7

使用委托方法locationManager:didChangeAuthorizationStatus:在用户允许或禁止位置请求时运行代码.