使用-dismissPopoverAnimated解雇UIPopoverController:不会调用委托吗?

nac*_*o4d 14 iphone cocoa-touch delegates uipopovercontroller

我有自己的UIPopoverController作为委托:当我在弹出控制器外面点击时我接到电话,但当我点击内部时我也想解雇,所以我使用-dismissPopoverAnimated:但是在这种情况下不调用委托.这是正常的吗?这是一个错误还是我做错了什么?

newDocPopoverController = [[UIPopoverController alloc] initWithContentViewController:vc];
[newDocPopoverController setPopoverContentSize:CGSizeMake(240, 44*4)];
[newDocPopoverController presentPopoverFromBarButtonItem:sender 
                permittedArrowDirections:UIPopoverArrowDirectionAny
                                                        animated:YES];
[newDocPopoverController setDelegate:self];
Run Code Online (Sandbox Code Playgroud)

更新:

哦,无论问题的根源(是否是一个错误或这是预期的行为)自己调用委托解决了问题:)

当触摸contentViewController的视图时,我将调用父UIPopoverController的委托.

if ([parentPopoverController.delegate popoverControllerShouldDismissPopover:parentPopoverController]){
    [parentPopoverController dismissPopoverAnimated:YES];
    [parentPopoverController.delegate popoverControllerDidDismissPopover:parentPopoverController];
}r];
Run Code Online (Sandbox Code Playgroud)

Dou*_*aan 22

这是正常的预期行为.

引述苹果文档popoverControllerDidDismissPopover::

弹出控制器不会调用此方法来响应对该方法的编程调用dismissPopoverAnimated:.如果以编程方式关闭弹出框,则应在调用dismissPopoverAnimated:方法后立即执行任何清理操作.


Al *_*ual 22

以编程方式不会调用popoverControllerDidDismissPopover并且不会被解雇,您必须自己调用该委托:

[self.PopUp dismissPopoverAnimated:YES];
[self.PopUp.delegate popoverControllerDidDismissPopover:self.PopUp];
Run Code Online (Sandbox Code Playgroud)

PopUp是父母的地方 UIPopoverController

希望这可以帮助

干杯Al