[英]UIPopover doesn't block UIBarbutton items from being pressed
我正在创建一个具有一些UIBarButton项的应用程序,其中一些项在按下时会启动UIPopoverController。 我希望此操作禁止任何东西与之交互,这通常是默认情况下发生的。 但是,我注意到,当弹出框处于活动状态时,同一工具栏中的其他UIBarButtonItem仍将处于活动状态。 我尝试添加:
[_popOver setPassthroughViews:nil];
在显示它之前,但是在显示弹出窗口时仍可以按下UIBarButtonItems。 我意识到我可以禁用按钮,但是我宁愿不必这样做,因为当每种弹出窗口打开时,我必须引入各种不必要的状态。 当在弹出窗口之外选择任何东西(包括其他UIBarButtonItems)时,有什么方法可以消除弹出窗口?
重现问题的基本代码:
- (IBAction)rightButtonPressed:(id)sender {
UIViewController *vc = [[UIViewController alloc] init];
_popOver = [[UIPopoverController alloc] initWithContentViewController:vc];
[_popOver setPassthroughViews:nil];
[_popOver presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
- (IBAction)leftButtonPressed:(id)sender {
NSLog(@"Why am I active while pop-over is visible?");
}
将两个按钮按钮项都添加到同一导航栏中。
我是个白痴,在发布了这篇文章之后就想出了解决方法。 似乎对presentPopoverFromBarButtonItem
的调用会自动将导航栏添加到passthroughviews。 由于我在展示UIPopoverView
之前而不是之后进行了UIPopoverView
,因此将其添加回来。 简单更改呼叫顺序即可解决此问题。
- (IBAction)rightButtonPressed:(id)sender {
UIViewController *vc = [[UIViewController alloc] init];
_popOver = [[UIPopoverController alloc] initWithContentViewController:vc];
[_popOver presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
//Call this *AFTER* presenting the popover
[_popOver setPassthroughViews:nil];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.