使用modalInPopover显示弹出框时,如何禁用主工具栏?

时间:2011-07-12 23:19:06

标签: ipad uipopovercontroller uibarbuttonitem uitoolbar

我正在显示包含视图控制器的popover,其中设置了modalInView属性。我需要用户在继续之前输入回复。

虽然这会禁用我的大多数用户界面控件,但它会禁用主应用程序上的工具栏按钮。我不希望用户在弹出窗口中选择项目并关闭它之前与应用程序进行交互。

我在这里错过了一些聪明的东西 - 即默认情况下会禁用工具栏吗?为什么它仍然活跃?是否有一些需要它的用户界面指南?

我应该只设置工具栏以禁止用户交互,还是那么乱?

3 个答案:

答案 0 :(得分:6)

当您从UIBarButtonItem呈现时,iOS似乎将条形图添加为popover的“passthrough视图”。

在呈现之后设置为UIPopoverController的nil passthroughViews属性,如下所示:

[self.myPopover presentPopoverFromBarButtonItem:some_item permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
dispatch_async(dispatch_get_main_queue(), ^{ self.myPopover.passthroughViews = nil; });

答案 1 :(得分:2)

使用-[UIPopoverController presentPopoverFromRect:inView:permittedArrowDirections:animated]代替,默认情况下不启用工具栏互动。例如,如果从UIBarButtonItem呈现customView属性集:

[barButtonItem presentPopoverFromRect:barButtonItem.customView.bounds inView:barButtonItem.customView permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];`

答案 2 :(得分:1)

我发现最有效的是你在问题中提到的可能性:

-(void)showMyPopover
{
    ....
    self.myToolBar.userInteractionEnabled=NO;
    [self.myPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]
}

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    self.myToolBar.userInteractionEnabled=YES;
    ...
}