我将自己的UIPopoverController作为委托: 当我在弹出控制器外部点击时我接到电话,但当我点击内部时我也想解雇,所以我使用-dismissPopoverAnimated:但是在这种情况下不调用委托。 这是正常的吗?这是一个错误还是我做错了什么?
newDocPopoverController = [[UIPopoverController alloc] initWithContentViewController:vc];
[newDocPopoverController setPopoverContentSize:CGSizeMake(240, 44*4)];
[newDocPopoverController presentPopoverFromBarButtonItem:sender
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
[newDocPopoverController setDelegate:self];
更新:
哦,无论问题的根源(是否是错误或这是预期的行为),我自己调用代表解决了问题:)
当触摸contentViewController的视图时,我将调用父UIPopoverController的委托调用。
if ([parentPopoverController.delegate popoverControllerShouldDismissPopover:parentPopoverController]){
[parentPopoverController dismissPopoverAnimated:YES];
[parentPopoverController.delegate popoverControllerDidDismissPopover:parentPopoverController];
}r];
答案 0 :(得分:22)
这是正常的预期行为。
在popoverControllerDidDismissPopover:
上引用Apple docs:
弹出控制器不会调用此方法来响应对
dismissPopoverAnimated:
方法的编程调用。如果以编程方式关闭popover,则应在调用dismissPopoverAnimated:
方法后立即执行任何清理操作。
答案 1 :(得分:22)
以编程方式调用popoverControllerDidDismissPopover并且不会被解雇,您必须自己调用该委托:
[self.PopUp dismissPopoverAnimated:YES];
[self.PopUp.delegate popoverControllerDidDismissPopover:self.PopUp];
PopUp是父UIPopoverController
希望这有帮助
干杯 人
答案 2 :(得分:0)
首先设置代理;
yourPopup.delegate =自我;
然后在您的代码中的某些位置(由于某些事件可能在特定方法调用中)。 使用以下代码;
[self.yourPopUp dismissPopoverAnimated:YES];