在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;
}
我尝试了几件事,但仍然没有。令人难以置信的沮丧,我觉得我错过了一些微不足道的事情。
答案 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];
}