UIPopoverController からの通知をメイン ビューに投稿しています。メイン ビューはすぐに、dismissPopoverAnimated を呼び出し、Web ビューをロードするかなり重い作業を実行します。このコードはすべて機能します。問題は、一部の古い iPad では、CPU を集中的に使用する作業が完了するまで (デバッガーで確認)、ポップオーバーが実際に閉じられないことです。これにより、ポップオーバーが閉じられた後、2 秒間ハングしているように見えます。最初に集中的なコードを実行する代わりに、ポップオーバーがすぐに閉じられるようにするにはどうすればよいですか?
通知に応答するメソッドは次のとおりです。
- (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;
}
}