UIDocumentInteractionController 删除操作菜单
UIDocumentInteractionController remove Actions Menu
我一直在使用 Apple 示例代码从此处查看文档:
https://developer.apple.com/library/ios/samplecode/DocInteraction/Listings/ReadMe_txt.html
我已经删除了所有我不需要的部分,并让它按照我想要的方式工作。问题是我不希望用户访问文档控制器右上角的 "Actions" 菜单。每次您 select 列表中的文档时都会出现:
理想情况下,我想一起删除按钮,但如果我可以禁用它或禁用其中的所有选项也足够了。我发现了这个问题:
Open in + UIDocumentInteractionController : how to filter options in SDK iOS 6 (canPerformActions is deprecated)
但我不知道如何使用建议来禁用菜单内的选项。我已经在这里上传了修改后的示例代码:
http://plasma.servebeer.com/DocSampleCode.zip
最后要注意的是,这不会出现在 App Store 上,它仅供私人、个人使用,所以如果有非官方的方式,那么我也有兴趣知道。
任何帮助将不胜感激,提前致谢。
等离子
创建 QLPreviewController class 后,您需要将 rightBarButtonItem 设置为 nil。代码片段:
QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.navigationItem.rightBarButtonItem = nil;
我确实下载了项目,执行后 "Action" 按钮没有显示在顶部导航项中,而是显示在工具栏中。那么在这种情况下,您需要 subclass QLPreviewController 并覆盖 viewWillAppear ,如下所示。
@implementation ExViewController
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSMutableArray *a = [NSMutableArray arrayWithArray:@[]];
for (NSUInteger i = 0; i < self.toolbarItems.count; i++) {
if (i == 0) {
continue;
}
[a addObject:self.toolbarItems[i]];
}
}
@end
使用UINavigationControllerDelegate
@interface DITableViewController () <UIDocumentInteractionControllerDelegate, UINavigationControllerDelegate>
将 navigationController 委托分配给自己
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationController.delegate = self;
}
改变documentInteractionControllerViewControllerForPreview
- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)interactionController {
return self.navigationController;
}
添加这个UINavigationControllerDelegate
方法
// Called when the navigation controller shows a new top view controller via a push, pop or setting of the view controller stack.
- (void)navigationController:(UINavigationController*)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if ([viewController isKindOfClass:[QLPreviewController class]]) {
viewController.navigationItem.rightBarButtonItem = nil;
}
}
MP4 文件更新
在 MP4 文件中,操作按钮位于 UIToolbar
- (void)navigationController:(UINavigationController*)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if ([viewController isKindOfClass:[QLPreviewController class]]) {
viewController.navigationItem.rightBarButtonItem.customView = [[UIView alloc] init];
UIBarButtonItem *item = viewController.toolbarItems.firstObject;
item.customView = [[UIView alloc] init];
}
}
N.B。这在 iOS
的未来版本中可能不起作用
如果您想隐藏按钮,iOS 10.0 及更高版本的 Swift 语言[=] 将无法提供答案14=]。你可以使用 WKWebView。希望它能节省您的时间。
我一直在使用 Apple 示例代码从此处查看文档:
https://developer.apple.com/library/ios/samplecode/DocInteraction/Listings/ReadMe_txt.html
我已经删除了所有我不需要的部分,并让它按照我想要的方式工作。问题是我不希望用户访问文档控制器右上角的 "Actions" 菜单。每次您 select 列表中的文档时都会出现:
理想情况下,我想一起删除按钮,但如果我可以禁用它或禁用其中的所有选项也足够了。我发现了这个问题:
Open in + UIDocumentInteractionController : how to filter options in SDK iOS 6 (canPerformActions is deprecated)
但我不知道如何使用建议来禁用菜单内的选项。我已经在这里上传了修改后的示例代码:
http://plasma.servebeer.com/DocSampleCode.zip
最后要注意的是,这不会出现在 App Store 上,它仅供私人、个人使用,所以如果有非官方的方式,那么我也有兴趣知道。
任何帮助将不胜感激,提前致谢。
等离子
创建 QLPreviewController class 后,您需要将 rightBarButtonItem 设置为 nil。代码片段:
QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.navigationItem.rightBarButtonItem = nil;
我确实下载了项目,执行后 "Action" 按钮没有显示在顶部导航项中,而是显示在工具栏中。那么在这种情况下,您需要 subclass QLPreviewController 并覆盖 viewWillAppear ,如下所示。
@implementation ExViewController
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSMutableArray *a = [NSMutableArray arrayWithArray:@[]];
for (NSUInteger i = 0; i < self.toolbarItems.count; i++) {
if (i == 0) {
continue;
}
[a addObject:self.toolbarItems[i]];
}
}
@end
使用UINavigationControllerDelegate
@interface DITableViewController () <UIDocumentInteractionControllerDelegate, UINavigationControllerDelegate>
将 navigationController 委托分配给自己
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationController.delegate = self;
}
改变documentInteractionControllerViewControllerForPreview
- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)interactionController {
return self.navigationController;
}
添加这个UINavigationControllerDelegate
方法
// Called when the navigation controller shows a new top view controller via a push, pop or setting of the view controller stack.
- (void)navigationController:(UINavigationController*)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if ([viewController isKindOfClass:[QLPreviewController class]]) {
viewController.navigationItem.rightBarButtonItem = nil;
}
}
MP4 文件更新
在 MP4 文件中,操作按钮位于 UIToolbar
- (void)navigationController:(UINavigationController*)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if ([viewController isKindOfClass:[QLPreviewController class]]) {
viewController.navigationItem.rightBarButtonItem.customView = [[UIView alloc] init];
UIBarButtonItem *item = viewController.toolbarItems.firstObject;
item.customView = [[UIView alloc] init];
}
}
N.B。这在 iOS
的未来版本中可能不起作用如果您想隐藏按钮,iOS 10.0 及更高版本的 Swift 语言[=] 将无法提供答案14=]。你可以使用 WKWebView。希望它能节省您的时间。