使用 -dismissPopoverAnimated 关闭 UIPopoverController:不会调用委托?
我有我的 UIPopoverController 以 self 作为代表: 当我点击弹出窗口控制器外部时,我会收到呼叫,但是当我点击内部时,我也想关闭,因此我使用 -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];
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];
UPDATE:
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 :)
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];
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是正常的、预期的行为。
引用 Apple 文档上的
popoverControllerDidDismissPopover:
:That's normal, expected behavior.
Quoting the Apple docs on
popoverControllerDidDismissPopover:
:以编程方式, popoverControllerDidDismissPopover 不会被调用,也不会被解雇,您必须自己调用委托:
其中 PopUp 是父
UIPopoverController
希望这有帮助
干杯
铝
Programmatically the popoverControllerDidDismissPopover does not get called and won't dismissed, you'll have to call the delegate yourself:
Where PopUp is the parent
UIPopoverController
Hope this helps
Cheers
Al
首先设置委托;
yourPopup.delegate=self;
然后是代码中的某些位置(可能是由于某些事件而在特定方法调用中)。
使用以下代码;
[self.yourPopUp dismissPopoverAnimated:YES];
set the delegate first;
yourPopup.delegate=self;
then some where in your code (May be in Particular Method call due some event).
use the following code;
[self.yourPopUp dismissPopoverAnimated:YES];