UIDocumentInteractionController打开菜单使工具栏项在iPhone中消失

时间:2013-01-30 07:26:39

标签: iphone ios6 toolbar uidocumentinteraction

我有一个UIToolbar添加到视图,工具栏有几个UIBarButtonItem。其中一个按钮将调出UIDocumentInteractionController打开菜单。在iPhone中,Open In菜单的工作方式类似于UIActionSheet,它将从屏幕底部显示并禁用除其自身之外的所有其他按钮(屏幕的其他部分将被浅灰色阴影遮盖,你知道我的意思)

我的问题是,当打开“打开”菜单时,UIToolBar中的所有按钮都会消失,类似于iOS“自动隐藏”。在关闭“打开”菜单后,按钮将会回来。我想要的只是在打开“打开方式”菜单时保持按钮可见。

此问题仅出现在iOS6(当然还有iPhone)中,因为在iOS5中,“打开方式”菜单具有不同的样式。我不太确定这种行为是否可以改变。但是,Adobe PDF阅读器应用程序看起来像我一样,但工具栏项目永远不会消失。

我用来调出Open In菜单的代码是这样的:

[documentInteractionController presentOpenInMenuFromRect:CGRectZero inView:self.topBar animated:YES]

self.topBar是我之前提到的工具栏,我也尝试过self.view,self.view.window等,但是没有一个工作。

我想念某事吗?或者有一些解决方法吗?

根据需要添加更多代码:

UIToolbar添加在XIB文件中,我使用UIButton自定义一个UIBarbuttonItem:

UIButton *button = [UIButton  buttonWithType:UIButtonTypeCustom];
[button setImage:image forState:UIControlStateNormal];
button.frame = CGRectMake(0, 0, image.size.width, image.size.height);
[button addTarget:self action:@selector(doSth) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *tItem = [[UIBarButtonItem alloc] initWithCustomView:button];

然后我将tItem添加到UIToolbar的items数组中:

NSArray *items = [NSArray arrayWithObject:tItem];
topBar.items = items;

“doSth”方法只做一件事,只需初始化一个UIDocumentInteractionController并显示Open In菜单:

UIDocumentInteractionController documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];
[documentInteractionController presentOpenInMenuFromRect:CGRectZero inView:self.topBar animated:YES];

当然,工具栏中有更多的栏按钮项。因此,当显示“打开”菜单时,所有按钮都是“隐藏”的。我认为Apple可能会通过设计来做到这一点,但我想知道是否有一些解决方法可以改变这种行为。

1 个答案:

答案 0 :(得分:0)

这里的秘密是使用UINavigationBar而不是UIToolbar。正式地说,UIToolbars应该在屏幕底部使用,UINavigationBars在顶部使用。 (但是,之前可能无法实现这一点,因为直到iOS5,UINavigationBar才能在每一端都有多个项目。)

这似乎是Apple的“设计”。有关此功能可能有用的示例,请在Dropbox应用程序中查看文件时查看底部工具栏。 (如果他们没有隐藏物品,他们将直接落在取消按钮的接缝处。)