我将来自 UIPopoverController 的通知发布回我的主视图,然后立即调用dismissPopoverAnimated,然后开始做一些相当繁重的工作来加载 Web 视图。所有这些代码都有效;问题在于,在一些较旧的 ipad 上,直到 CPU 密集型工作完成(在调试器中验证)之后,popover 才会真正解除。这会导致弹出框在被解雇后似乎挂起一秒钟。如何确保立即关闭弹出窗口而不是先执行密集代码?
响应通知的方法如下:
- (void)changeDefaultView:(NSNotification *)note
{
[self closePopover];
int i;
for(i = 0; i < [arrWebViewControllers count]; i++)
{
WebViewController *wvc = [arrWebViewControllers objectAtIndex:i];
[[wvc webview] stopLoading];
[[wvc webview] removeFromSuperview];
[[wvc imageview] removeFromSuperview];
wvc = nil;
}
[arrWebViewControllers removeAllObjects];
[arrLinks removeAllObjects];
[arrImageViews removeAllObjects];
[self loadCategory:[note object]];
[self addWidgetsToView];
}
而 closePopover 是:
- (void)closePopover
{
if(popover != nil)
{
[popover dismissPopoverAnimated:YES];
popover = nil;
}
}