iOS7中的UIAlertView在关闭时锁定显示

时间:2013-10-16 19:14:08

标签: ios objective-c xcode ios7

在iOS7发布之前我对iOS版本中的以下代码没有任何问题,现在当我尝试在iOS7上运行时,我得到了不希望的结果。

[self.view setUserInteractionEnabled:YES];
mAlert=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"There are no more reports matching this search query." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[mAlert show];
[SVProgressHUD dismiss];

警报消息将出现并提示用户点击OK。当警报消失时,我现在留下了一个无法再与之交互的视图,唯一的解决方案是重新运行应用程序。应用程序本身不是“冻结”,因为在我的配置文件中它可以看到它仍然存在,我只是无法与它交互。我实现了UIAlertViewDelegate,下面是我执行的didDismissWithButtonIndex:function

-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:  (NSInteger)buttonIndex {
mAlert = nil;
}

我尝试了几件事,但仍然没有。令人难以置信的沮丧,我觉得我错过了一些微不足道的事情。

1 个答案:

答案 0 :(得分:3)

你确定该方法是在主线程中运行的吗?任何与UI有关的方法都需要在主线程上运行,而不是后台线程。

如果要显示后台线程的警报,请在后台方法中尝试:

    [self performSelectorOnMainThread:@selector(showAlert) withObject:nil waitUntilDone:YES];

并添加这样的方法

- (void) showAlert {
    UIAlertView *mAlert=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"There are no more reports matching this search query." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [mAlert show];
}