ipad - 如何连接到 iPad 弹出工具栏按钮的操作方法?

标签 ipad uipopovercontroller popover uisplitview

我正在使用 Split View模板创建一个简单的 Split View,当然,它在纵向模式下有一个弹出窗口。我正在使用由模板生成的默认代码,该代码添加/删除工具栏项并设置弹出 Controller 并将其删除。这两个方法分别是splitViewController:willShowViewController:...和splitViewController:willHideViewController:...

我正在尝试弄清楚如果用户在显示弹出窗口时点击工具栏按钮,如何使弹出窗口消失。如果您点击弹出窗口外的任何地方,您可以在不选择项目的情况下使弹出窗口消失,但我也想让它在用户再次点击按钮时消失。

我被卡住的地方是:似乎没有一种明显、简单的方法来 Hook 工具栏按钮的操作。使用调试器,我可以知道在按钮上调用的操作是 showMasterInPopover。我承认,我不熟悉以编程方式使用选择器。

我能否以某种方式编写一个 Action 并将其设置在工具栏项上而不覆盖已经存在的 Action ?例如添加一个调用现在存在的 Action 的 Action ?或者我是否必须自己编写一个显示/隐藏弹出窗口的操作(现在大概是由 Split View Controller 在幕后完成的行为???)。

或者我是否缺少一种简单的方法来将此行为添加到此按钮而不更改为我设置的现有行为?

谢谢!

最佳答案

事实证明,通过实现 SplitViewController willPresentViewController 方法,您可以在单击 barButtonItem 时关闭弹出窗口,如下所示:

- (void) splitViewController:(UISplitViewController *)svc 
           popoverController: (UIPopoverController *)pc
   willPresentViewController: (UIViewController *)aViewController
{
    if (pc != nil) {
        [pc dismissPopoverAnimated:YES];
    }
}

关于ipad - 如何连接到 iPad 弹出工具栏按钮的操作方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2588425/

相关文章:

iphone - 为什么要使用 NSOperationQueue?

ios - 级联弹出框 : User Friendliness vs Guidelines

jquery - 如果与 Prototype JS 一起使用,Popover 会隐藏父元素

html - 通过 CSS 防止 iPad 移动版 Safari 截断内容

iphone - 制作 UIImage/UIScrollView 的一个区域 "clickable"

ios - 如何将 PopoverPresentationController 设置为 "wait'

javascript - 在页面加载时打开一个弹出窗口并在其他任何地方单击时隐藏 + 在调整窗口大小时动态跟随其父级

javascript - 将 Bootstrap 弹出内容中的文本分成多行

iphone - 依次异步调用MFMailComposeViewController

swift - 如何将 MGLAnnotationView 设置为弹出窗口的 sourceView