2012-02-23 61 views
0

我想检查警报是否已存在于我的窗口上。警报是GPS的提示(类似于“您的应用程序”将使用您的当前位置,不允许和允许按钮)。如果此警报出现在屏幕上,我想设置一些标志。如果有人知道它,那么请帮助我解决这个问题。检查GPS警报是否存在

+0

你得到这个警报只有一次,当你的应用程序尝试使用的第一次位置经理可能是你可以做你的事情刚刚开始位置马槽 – 2012-02-23 08:54:41

+0

你,我已经想到了后使用一个标志并且第一次重置它。但是我想检测警报是否存在。 – anshul 2012-02-23 09:12:44

+0

系统生成的警报可能会尝试收听某些通知,该通知会在出现警报时发布 – 2012-02-23 11:51:57

回答

0
for (UIWindow* window in [UIApplication sharedApplication].windows) { 
    NSArray* subviews = window.subviews; 
    if ([subviews count] > 0) 
    if ([[subviews objectAtIndex:0] isKindOfClass:[UIAlertView class]]) 
     return YES; 
} 
return NO; 

这将有助于...

+0

我已经尝试了此操作,但我认为这种方法在使用[alsertView show];显示警报时非常有用。它不工作的情况下的iPhone警报(如位置服务) – anshul 2012-02-23 09:11:55

+1

我可以问,你想检查此警报的目的是否存在或不。据此,我们可以给你更好的建议。 – Rupesh 2012-02-23 11:11:35

0

如果你比你CLLocationManagerauthorizationStatus开发的iOS4.2或更高版本

为此,您将需要检查[CLLocationManager authorizationStatus]变量,如果它的值是kCLAuthorizationStatusNotDetermined那么它将显示警报。

的iOS 5或更高版本的一个选项,通过它可以使用在这种情况下重置位置警告也状态将是kCLAuthorizationStatusNotDetermined。因此,如果您的应用程序正在运行,并且用户切换到设置以重置该属性,则需要执行以下代理方法CLLocationManagerDelegate

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status 
{ 
    switch (status) 
    { 
     case kCLAuthorizationStatusNotDetermined: 
      //If this is the case than alert will be shown 
      break; 
     case kCLAuthorizationStatusDenied: 

      break; 
     case kCLAuthorizationStatusRestricted: 

      break; 
     case kCLAuthorizationStatusAuthorized: 

      break; 
     default: 
      break; 
    } 

} 

感谢,