【问题标题】:ipad detect when UIPopoverControllers are dismissedipad 检测 UIPopoverController 何时被解除
【发布时间】:2011-01-02 23:12:39
【问题描述】:

我的通用 iPad 应用程序中有几个 uiPopoverControllers。我现在需要在某个弹出框被解除后触发一个函数。如果用户在弹出框内单击“关闭”,我可以轻松做到这一点,但如果他们触摸屏幕以隐藏弹出框,我将无法触发我的功能。

我已经用谷歌搜索了一段时间,似乎找不到任何可以在我的主视图控制器中使用来捕获它们的委托方法。我会喜欢 didDismissPopoverController 之类的东西 - 但我猜它不可用。

如果不是,我想唯一要做的就是检测触摸并触发?基本上我正在突出显示 UITableView 行并加载弹出框。我需要取消选择该行 - 所以想简单地调用 [table reloaddata]。

感谢您对此的任何帮助!

【问题讨论】:

    标签: cocoa-touch ipad uipopovercontroller


    【解决方案1】:

    您需要为UIPopoverController 分配一个委托,然后实现- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController 方法。例如:

    @interface FooController : UIViewController <UIPopoverControllerDelegate> {
        // ...
    }
    // ...
    @end
    

    当您实例化UIPopoverController 时(例如,在此示例中,在FooController 中)...

    UIPopoverController *popover = // ...
    popover.delegate = self;
    

    然后,您将实现该方法:

    - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
        // do something now that it's been dismissed
    }
    

    当然,我还没有对此进行测试,但它似乎应该可以工作......

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      您可以在以下分配后使用 popoverControllerDidDismissPopover 委托方法: self.popoverController.delegate = self;

      请注意,如果您以编程方式调用 [self.popoverControllerdismissPopoverAnimated:YES],则不会调用 popoverControllerDidDismissPopover 委托方法。

      【讨论】:

      • 这是真的,看文档:The popover controller does not call this method in response to programmatic calls to the dismissPopoverAnimated: method. If you dismiss the popover programmatically, you should perform any cleanup actions immediately after calling the dismissPopoverAnimated: method.
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      相关资源
      最近更新 更多