簡體   English   中英

從CLLocationManager授權警報中檢測按鈕按下

[英]Detect button press from CLLocationManager Authorization alert

我正在檢測用戶是否已接受使用我的應用程序中的位置服務的請求,我在UI中有一個切換開關,該開關依賴於此接受。 他們首次將開關撥到(on)位置時,觸發了使用位置的請求。 我想知道他們在該警報中按下了哪個按鈕。 (接受或拒絕)現在,我只是將其切換並讓用戶再次按下它(然后檢測他們選擇了哪個選項)。

這樣有點草率,所以我想知道是否有一種方法可以檢測到此特定警報,或者由於它是由操作系統而不是由應用程序觸發的,因此無法執行此操作嗎? 我還沒有嘗試過,但是我想我可以只將UIAlertView委托方法用於通用按鈕的按下,但是希望有一些更具體的方法。

更新

我可以通過觸發位置請求時注冊一個通知來完成此工作(並顯示授權提示)。 該應用程序處於非活動狀態(就像拉下通知欄一樣)。 我只是在應用程序處於活動狀態時觸發通知,並且能夠在那里查詢授權狀態並更新我的UI。 我希望這可以幫助其他人即時處理授權狀態。

無法攔截警報。 但是,在CLLocationManagerDelegate方法上有一個名為didChangeAuthorizationStatus的方法。 這可能是最接近攔截警報的方法。

如您所說,由於該警報來自操作系統,因此無法明確知道用戶選擇哪個按鈕。 但是,您可以找出是否已為您的應用程序啟用了位置服務,並知道這種方式。 使用這樣的方法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM