通过代码让UIAlertView自动消失

最近写程序突然冒出个奇怪的需求就是让UIAlertView自动消失,不过实现方法很简单,使用以下代码:

// hides alert sheet or popup. use this method when you need to explicitly dismiss the alert.
// it does not need to be called if the user presses on a button
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated;


一个小Demo代码:

@implementation ViewController {
    UIAlertView *alertView;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (IBAction)alert:(id)sender {
    alertView = [[UIAlertView alloc] initWithTitle:@"Hello"
                                           message:@"I will dismiss later..."
                                          delegate:nil
                                 cancelButtonTitle:@"Dismiss now" otherButtonTitles:nil, nil];
    
    [NSTimer scheduledTimerWithTimeInterval:3.0f
                                     target:self
                                   selector:@selector(dismissAlertView:)
                                   userInfo:nil
                                    repeats:NO];
    
    [alertView show];
}

- (void)dismissAlertView:(NSTimer*)timer {
    NSLog(@"Dismiss alert view");
    
    [alertView dismissWithClickedButtonIndex:0 animated:YES];
}

@end


点击视图中的按钮,运行alert方法:

通过代码让UIAlertView自动消失_第1张图片


保持程序前台运行3秒,对话框消失:

通过代码让UIAlertView自动消失_第2张图片


但是在这里遇到个问题,加入对话框启动后,立即点击Home键让程序进入后台,等待大概3秒钟,对话框消失后,再打开程序,界面如下:

通过代码让UIAlertView自动消失_第3张图片


可以看到按钮变成黑色了,但是界面依然可以响应用户的输入。

谷歌了一下,找到一篇文章,说这是iOS 7中UIAlertView的一个Bug。

原文链接:UIAlertView Bug on iOS 7

希望知道原因和解决方法的朋友告诉我一下。


你可能感兴趣的:(uialertview)