我的通用iPad应用程序中有几个uiPopoverControllers。我现在要求在某个弹出窗口被解除后触发一个函数。如果用户点击弹出窗口内的“关闭”,我可以很容易地做到这一点,但如果他们触摸屏幕隐藏弹出窗口,我就无法触发我的功能。
我一直在谷歌搜索一段时间,似乎无法找到任何委托方法,我可以在我的主视图控制器中使用它来捕获它们。我会喜欢像didDismissPopoverController这样的东西 - 但我猜它是不可用的。
如果没有,我想唯一要做的就是检测触摸然后触发?基本上我突出显示UITableView行并加载popover。我需要取消选择行 - 所以想简单地调用[table reloaddata]。
感谢您对此提供任何帮助!
答案 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委托方法。