当我的应用程序进入后台时,我的模态显示视图控制器会像这样关闭警报视图......
// 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;
}
顺便说一句,如果应用程序在后台被终止,应用程序将重新启动,并且条形按钮项目具有正确的色调(即未变暗)。