在iOS7中以编程方式关闭uialertview



我已经在自定义类中实现了UIAlertview类别。我从uitableviewcontroller调用该方法来显示警报。但在iPhone 4设备上的iOS7中,快速点击uitableviewcells时,警报视图会多次出现。

如果alertview已经通过使用以下代码打开,我将尝试关闭它。

for (UIWindow* w in [UIApplication sharedApplication].windows)
    for (NSObject* o in w.subviews)
        if ([o isKindOfClass:[UIAlertView class]])
            [(UIAlertView*)o dismissWithClickedButtonIndex:[(UIAlertView*)o cancelButtonIndex] animated:YES];

但是这个代码在iOS7中不起作用。我不确定我所遵循的方式是否正确。

遍历[UIApplication sharedApplication].windows是个坏主意。更好的概念是保留活动UIAlertView的引用,并在需要时将其忽略。

注意:使用UIAlertView属性isVisible,该属性指示是否显示AlertView。

示例:

if (YES == alertViewInstance.isVisible)
{
   //dismiss your alert view
}

最新更新