【问题标题】:Stop UIPopover from dismissing automatically阻止 UIPopover 自动关闭
【发布时间】:2011-10-31 01:12:27
【问题描述】:

我想知道是否有办法阻止 iPad 弹出框在您触摸弹出框外的屏幕时自动关闭?如果没有,是否可以调用某种类似于“popoverDidDismiss”的方法来判断弹出框何时被解除?

【问题讨论】:

    标签: objective-c ios ipad uipopover


    【解决方案1】:

    是的,你可以。这直接来自 Apple 文档。

    当弹出框由于用户在弹出框视图之外点击而被关闭时,弹出框会自动通知其代理该操作。如果您提供委托,则可以使用此对象来防止弹出框的解除或执行其他操作以响应解除。 popoverControllerShouldDismissPopover: 委托方法使您可以控制是否应实际关闭弹出框。如果您的委托未实现该方法,或者您的实现返回 YES,控制器将关闭弹出框并向委托发送 popoverControllerDidDismissPopover: 消息。

    只需返回 NO 给委托方法popoverControllerShouldDismissPopover:

    这是进一步阅读的链接。

    Popover Guide

    【讨论】:

    • 感谢您的快速回复。我尝试实现这一点,但它似乎不起作用。我应该把它放在弹出框出现的视图的 .m 中,而不是弹出框内的视图,对吧?
    • 你搞定了吗?如果是这样,如何?如果不是,为什么它被标记为正确答案?
    • 您是否记得让您的视图控制器成为弹出框控制器的委托?
    • 链接上的 404,仅供参考
    【解决方案2】:
    - (BOOL) popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
    {
        return NO;
    }
    

    这会为您完成,您可以在弹出框中分配特定的栏按钮项或其他内容以关闭弹出框。

    【讨论】:

    • 我尝试实现它,但它似乎不起作用。我应该把它放在弹出框出现的视图的 .m 中,而不是弹出框内的视图,对吧?
    • 是的。您是否在头文件中指出实现 UIPopoverControllerDelegate ?
    • 我想是的。在包含弹出框内容的文件中,在 .h 我有协议 OptionsViewControllerDelegate -(void)didPick:(NSString *)string;结束 id 委托;并在 .m 中:合成委托;在弹出窗口出现的文件的 .h 中,我有: interface exampleViewController : UIViewController { UIPopoverController *popoverController;选项视图控制器 *选项视图控制器;然后在.m中合成UIpopoverController和OptionsViewController。我错过了什么吗?谢谢。
    • 那里也有 (at)s,但我没有足够的字符来放入它们。抱歉。如果太混乱,我可以给你发一个文本文件。非常感谢您的帮助。
    • 接口示例ViewController : UIViewController
    【解决方案3】:

    你也可以用

    self.modallnpopover = yes;

    如果你想在特定视图中关闭它

    self.modallnpopover = no;

    如果你不想关闭它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      • 2013-05-22
      • 1970-01-01
      相关资源
      最近更新 更多