点击 UIBarButtonItem 后关闭 UIPopoverController(如果可见)

发布于 2024-09-07 22:11:00 字数 268 浏览 6 评论 0原文

如果/当另一个 UIBarButtonItem 被点击时,我试图关闭任何当前可见的 UIPopoverControllers,如在样式/媒体/工具等之间点击时在 iPad 的页面上看到的那样。

我已经这样做了,但它太具体了。寻找通用的东西。

if ([popoverController isPopoverVisisble]) {
[popoverController dismissPopoverAnimated:YES];
}

谢谢!

I'm trying to dismiss any currently visible UIPopoverControllers if/when another UIBarButtonItem is tapped as seen on Pages for the iPad when tapping between Styles/Media/Tools etc.

I've done this, but it's too specific. Looking for something generic.

if ([popoverController isPopoverVisisble]) {
[popoverController dismissPopoverAnimated:YES];
}

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

听风吹 2024-09-14 22:11:00

您是否设置了弹出窗口控制器的 passthroughViews 属性?如果您这样做,那么点击弹出窗口外部将不会导致弹出窗口自动关闭,而是会被发送到该数组中的视图。您应该能够将 UIBarButtonItem 添加到此数组,然后关闭该处理程序中的弹出窗口。

Did you set the passthroughViews property of the popover controller? If you do this, then taps outside the popover will not cause the popover to automatically dismiss, but will instead be sent to the views in that array. You should be able to add the UIBarButtonItem to this array, and then dismiss the popover in that handler.

折戟 2024-09-14 22:11:00

兰德尔梅多斯的回答不会起作用。 UIBarButtonItem 不是 UIView 的后代,这意味着您无法将其添加到 passthroughViews 中。

我现在找到的唯一解决方案是使用自定义 UIButton 创建 UIBarButtonItem

   UIBarButtonItem *b =  [[UIBarButtonItem alloc] initWithCustomView:button]

,然后使用,

 popoverController.passthroughViews = [NSArray arrayWithObject:b.customView];

但要做好准备,您将失去所有样式 - 您不能太容易创建看起来像 UIBarButtoItem 的 UIButton。

randallmeadows answer will NOT work. UIBarButtonItem is not descendant of UIView, which means you cannot add it to passthroughViews.

The only solution I found for now is to create UIBarButtonItem with custom UIButton using

   UIBarButtonItem *b =  [[UIBarButtonItem alloc] initWithCustomView:button]

and then

 popoverController.passthroughViews = [NSArray arrayWithObject:b.customView];

But be prepared that you'll loose all the styling - you cannot create UIButton that looks like UIBarButtoItem too easily.

神回复 2024-09-14 22:11:00
[popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
popoverController.passthroughViews = @[];

对我有用

[popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
popoverController.passthroughViews = @[];

Works for me

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文