これは基本的に次の続きです。開いているときにBarButtonItemが押されたときにiPadUIPopoverControllerを閉じるが、この問題は別の質問を正当化するのに十分な大きさであると思います。
基本的に、彼らは、barbuttonitem(splitviewcontrollerによって提供される)がクリックされたときにポップオーバーを表示し、同じbarbuttonitemが再度クリックされたときにポップオーバーを非表示にしたいと考えていました。彼らは電話でそれを解決しました:
- (void)splitViewController:(UISplitViewController*)svc popoverController:(UIPopoverController*)pc willPresentViewController:(UIViewController *)aViewController{
if ([popoverController isPopoverVisible]) {
[popoverController dismissPopoverAnimated:YES];
}
}
ただし、barbuttonitemを最初にクリックすると、このメソッドが正しく呼び出され、ポップオーバーが表示されるという問題が発生しました。ただし、ポップオーバーが開いているときにbarbuttonitemを続けてクリックしても、このメソッドは呼び出されません。
さらに不可解なことに、他の方法(ポップオーバーの外側をクリック)でポップオーバービューを閉じると、ポップオーバーは自動的に閉じます。ただし、ボタン自体をクリックしてもポップオーバーは閉じず、「willPresentViewController」メソッドも呼び出されません。
このボタンクリックアクションをキャッチする他の手段はありますか?または、ポップオーバーが開いているときにボタンをクリックしてもメソッドが呼び出されない理由について何か考えはありますか?