1

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

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

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

谢谢!

4

3 回答 3

2

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

于 2010-07-15T23:29:07.680 回答
1

randallmeadows 的回答是行不通的。UIBarButtonItem 不是 UIView 的后代,这意味着你不能将它添加到 passthroughViews。

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

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

接着

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

但是要做好准备,你会失去所有的样式——你不能太容易地创建看起来像 UIBarButtoItem 的 UIButton。

于 2011-04-06T02:01:39.803 回答
0
[popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
popoverController.passthroughViews = @[];

为我工作

于 2013-10-16T12:00:46.053 回答