由于某种原因屏幕变暗并冻结,警报未显示......有人可以帮忙吗?
提前致谢!
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello!"
message:@"Hello!" delegate:self
cancelButtonTitle:@"Done"
otherButtonTitles:nil];
[alert show];
[alert release];
}
答案 0 :(得分:15)
您可能正在从后台线程调用show
,在主线程上调用它,如下所示:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello!"
message:@"Hello!" delegate:self
cancelButtonTitle:@"Done"
otherButtonTitles:nil];
[alert performSelectorOnMainThread:@selector(show)
withObject:nil
waitUntilDone:NO];
[alert release];
答案 1 :(得分:0)
委托是正确的,但也许是因为你最后发布它可能会导致问题。
尝试使用nil委托: - )
例如:
UIAlertView *alertView;
alertView = [ [ UIAlertView alloc ] init ];
[ alertView setMessage:@"Hello World" ];
[ alertView show ];
[ alertView release ];
如果它有效,那么它就是委托,你需要将变量声明为类var。或者它可能在其他地方。
答案 2 :(得分:0)
此警报是否可能处于大循环中并且您没有在多个线程上运行?屏幕变暗,没有发生任何事情,我等同于在主线程上运行一个长进程(因此UI不会刷新并显示警报)。
答案 3 :(得分:0)
如果从后台线程显示UIAlertView,则会出现没有弹出窗口的黑屏或弹出速度较慢的弹出窗口。把它放回主线程中就可以了。我上周才遇到这个问题。