繁体   English   中英

UIPopover不会阻止UIBarbutton项被按下

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM