當我的應用程序進入的背景下,我提出了模態視圖控制器解聘警報視圖是這樣的...如何在iOS 7中以編程方式正確解除UIAlertView?
// called when view controller receives a UIApplicationDidEnterBackgroundNotification
- (void)applicationDidEnterBackground:(NSNotification *)notification
{
if (self.alertView) {
[self.alertView dismissWithClickedButtonIndex:0 animated:NO];
self.alertView = nil;
}
}
當我的應用程序返回到前臺,而不必被終止,警報視圖消失。但是,導航欄中的欄按鈕項目(來自UINavigationController)仍然變暗,就像仍然顯示警報視圖一樣。此外,關閉模式視圖控制器(通過點擊變暗的條形按鈕項目),顯示出呈現視圖控制器的條形按鈕項目也變暗。酒吧按鈕項目功能,但它們保持暗淡。
那麼,如何取消調暗酒吧按鈕項目?或者,如何在iOS 7中以編程方式正確解除警報視圖,以響應應用程序進入後臺?
的的iOS 7 UI轉換指南狀態以下:
當警報或動作片出現,iOS裝置7自動變暗的後面視圖的色調的色彩。爲了響應此顏色更改,在其渲染中使用tintColor的自定義視圖子類應該覆蓋tintColorDidChange以在適當時刷新渲染。
我的導航欄和欄按鈕項目不是自定義視圖;我沒有細分他們。我使用默認屬性(與條形按鈕項目相同)在故事板中創建了導航欄。所以我沒有地方可以重寫tintColorDidChange。
我所有的視圖都使用它們的tintColor屬性的默認值。
我試圖重新塞汀着色顏色爲默認值沒有成功:
if (self.alertView) {
[self.alertView dismissWithClickedButtonIndex:0 animated:NO];
self.view.tintColor = nil;
self.view.window.tintColor = nil;
self.alertView = nil;
}
我也試圖重新塞汀在視圖控制器的viewDidAppear着色顏色:沒有成功。
我也嘗試設置主視圖的tintAdjustmentMode到「正常」沒有成功:
if (self.alertView) {
[self.alertView dismissWithClickedButtonIndex:0 animated:NO];
self.alertView = nil;
self.view.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
}
順便說一句,如果應用程序被終止,而在後臺,應用程序與具有欄按鈕的項目將重新啓動正確的色調(即,不變暗)。
我的警報視圖已經通過從背景過渡到很多我的沮喪。我也會看更多。 – HalR
使用'[[UIApplication sharedApplication] keyWindow]',檢查當前活動窗口是什麼。由於UIAlertView具有自己的窗口,因此可能是該窗口不能正確解除,使您的欄(按鈕項)變暗。您也可以在應用程序再次激活之前嘗試解除它('application:willEnterForeground:')。 –