2012-02-23 87 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; 
    } 

} 

感謝,