当UIPopoverControllers被解除时,ipad会检测到

Mat*_*cer 9 cocoa-touch ipad uipopovercontroller

我的通用iPad应用程序中有几个uiPopoverControllers.我现在要求在某个弹出窗口被解除后触发一个函数.如果用户在弹出窗口内单击"关闭",我可以轻松地执行此操作,但如果他们触摸屏幕以隐藏弹出窗口,则无法触发我的功能.

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

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

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

don*_*kim 21

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

@interface FooController : UIViewController <UIPopoverControllerDelegate> {
    // ...
}
// ...
@end
Run Code Online (Sandbox Code Playgroud)

当你实例化UIPopoverController(例如,在这个例子中FooController)...

UIPopoverController *popover = // ...
popover.delegate = self;
Run Code Online (Sandbox Code Playgroud)

然后,您将实现该方法:

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

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

希望这可以帮助!