我正在尝试关闭任何当前可见的 UIPopoverControllers 如果/当在样式/媒体/工具等之间点击时点击另一个 UIBarButtonItem,如 iPad 的页面上所见。
我已经这样做了,但它太具体了。寻找通用的东西。
if ([popoverController isPopoverVisisble]) {
[popoverController dismissPopoverAnimated:YES];
}
谢谢!
我正在尝试关闭任何当前可见的 UIPopoverControllers 如果/当在样式/媒体/工具等之间点击时点击另一个 UIBarButtonItem,如 iPad 的页面上所见。
我已经这样做了,但它太具体了。寻找通用的东西。
if ([popoverController isPopoverVisisble]) {
[popoverController dismissPopoverAnimated:YES];
}
谢谢!
您是否设置了弹出框控制器的 passthroughViews 属性?如果你这样做,那么在弹出框之外的点击不会导致弹出框自动关闭,而是会发送到该数组中的视图。您应该能够将 UIBarButtonItem 添加到此数组,然后在该处理程序中关闭弹出框。
randallmeadows 的回答是行不通的。UIBarButtonItem 不是 UIView 的后代,这意味着你不能将它添加到 passthroughViews。
我现在找到的唯一解决方案是使用自定义 UIButton 创建 UIBarButtonItem
UIBarButtonItem *b = [[UIBarButtonItem alloc] initWithCustomView:button]
接着
popoverController.passthroughViews = [NSArray arrayWithObject:b.customView];
但是要做好准备,你会失去所有的样式——你不能太容易地创建看起来像 UIBarButtoItem 的 UIButton。
[popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
popoverController.passthroughViews = @[];
为我工作