【发布时间】:2012-04-05 16:23:46
【问题描述】:
这基本上是Dismissing iPad UIPopoverController when BarButtonItem is pushed while it's open 的延续,但是我认为这个问题足够大,需要另一个问题。
基本上,他们希望在单击 barbuttonitem(由 splitviewcontroller 提供)时显示弹出框,然后在再次单击相同的 barbuttonitem 时隐藏弹出框。他们通过调用解决了这个问题:
- (void)splitViewController:(UISplitViewController*)svc popoverController:(UIPopoverController*)pc willPresentViewController:(UIViewController *)aViewController{
if ([popoverController isPopoverVisible]) {
[popoverController dismissPopoverAnimated:YES];
}
}
但是,我遇到了第一次单击 barbuttonitem 时,此方法被正确调用并显示弹出框的问题。但是,在弹出框打开时对 barbuttonitem 的任何后续点击,都不会调用此方法。
更令人费解的是,当我通过其他方式(单击弹出框外部)关闭弹出框视图时,弹出框会自动关闭。但是,单击按钮本身不会关闭弹出框,也不会调用“willPresentViewController”方法。
还有其他方法可以捕获此按钮的点击动作吗?或者对为什么在弹出窗口打开时单击按钮不调用该方法的任何想法?
【问题讨论】:
标签: objective-c uisplitviewcontroller uibarbuttonitem