当UIPopoverController被解雇时,ipad会检测到

时间:2011-01-02 23:12:39

标签: cocoa-touch ipad uipopovercontroller

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

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

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

感谢您对此提供任何帮助!

2 个答案:

答案 0 :(得分:21)

您需要将委托分配给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
}

当然,我没有对此进行过测试,但它似乎应该有效......

希望这有帮助!

答案 1 :(得分:4)

您可以在执行以下任务后使用popoverControllerDidDismissPopover委托方法: self.popoverController.delegate = self;

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