3

在 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];

将出现警报消息并提示用户单击“确定”。当警报消失时,我现在只能看到一个无法再与之交互的视图,唯一的解决方案是重新运行该应用程序。该应用程序本身并没有像我分析它那样“冻结”并且可以看到它仍然存在,我只是无法与之交互。我实现了 UIAlertViewDelegate,下面是我对 didDismissWithButtonIndex: 函数的实现

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

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

4

1 回答 1

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];
}
于 2013-11-18T18:45:40.097 回答