我有一个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可能会通过设计来做到这一点,但我想知道是否有一些解决方法可以改变这种行为。
答案 0 :(得分:0)
这里的秘密是使用UINavigationBar而不是UIToolbar。正式地说,UIToolbars应该在屏幕底部使用,UINavigationBars在顶部使用。 (但是,之前可能无法实现这一点,因为直到iOS5,UINavigationBar才能在每一端都有多个项目。)
这似乎是Apple的“设计”。有关此功能可能有用的示例,请在Dropbox应用程序中查看文件时查看底部工具栏。 (如果他们没有隐藏物品,他们将直接落在取消按钮的接缝处。)