使用-dismissPopoverAnimated:拒绝UIPopoverController不会调用delegate? [英] Dismissing UIPopoverController with -dismissPopoverAnimated: won't call delegate?
问题描述
我有我的UIPopoverController与self作为委托:
当我点击外面的popover控制器时接收调用,但是当我点击里面我想也关闭,所以我使用-dismissPopoverAnimated:但委托没有被调用在这种情况下。
这是正常吗?这是一个错误还是我做错了?
I have my UIPopoverController with self as a delegate: I receive calls when I tap outside the popover controller, but when I tap inside I want to dismiss too, so I use -dismissPopoverAnimated: but delegate is not called in this case. Is this normal? Is this a bug or I am doing something wrong?
newDocPopoverController = [[UIPopoverController alloc] initWithContentViewController:vc];
[newDocPopoverController setPopoverContentSize:CGSizeMake(240, 44*4)];
[newDocPopoverController presentPopoverFromBarButtonItem:sender
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
[newDocPopoverController setDelegate:self];
更新:
问题的起源(无论是错误还是这是预期的行为)调用委托由自己解决问题:)
Oh, regardless the origin of the problem (Whether is a bug or this is the intended behavior) calling the delegate by myself solves the problem :)
当contentViewController的视图被触摸,我会调用父UIPopoverController的委托调用。
When the contentViewController's view is touched I will call parent UIPopoverController's delegate a call.
if ([parentPopoverController.delegate popoverControllerShouldDismissPopover:parentPopoverController]){
[parentPopoverController dismissPopoverAnimated:YES];
[parentPopoverController.delegate popoverControllerDidDismissPopover:parentPopoverController];
}r];
推荐答案
这是正常的,预期的行为。
That's normal, expected behavior.
引用 Apple docs popoverControllerDidDismissPopover:
:
popover控制器不会调用此方法来响应对
dismissPopoverAnimated:
方法的编程调用。如果您以编程方式关闭popover,则应在调用dismissPopoverAnimated:
方法后立即执行任何清除操作。
The popover controller does not call this method in response to programmatic calls to the
dismissPopoverAnimated:
method. If you dismiss the popover programmatically, you should perform any cleanup actions immediately after calling thedismissPopoverAnimated:
method.
这篇关于使用-dismissPopoverAnimated:拒绝UIPopoverController不会调用delegate?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!