点击UIBarButtonItem后,忽略UIPopoverController(如果可见)

时间:2010-06-30 22:53:50

标签: uibarbuttonitem uipopovercontroller dismiss

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

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

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

谢谢!

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

randallmeadows的回答不起作用。 UIBarButtonItem不是UIView的后代,这意味着你无法将它添加到passthroughViews。

我现在找到的唯一解决方案是使用

创建带有自定义UIButton的UIBarButtonItem
   UIBarButtonItem *b =  [[UIBarButtonItem alloc] initWithCustomView:button]

然后

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

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

答案 2 :(得分:0)

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

为我工作