UIDocumentInteractionController删除操作菜单

问题描述 投票:3回答:3

我一直在使用Apple示例代码来从此处查看文档:

https://developer.apple.com/library/ios/samplecode/DocInteraction/Listings/ReadMe_txt.html

我已经删除了我不需要的所有内容,并按照我的期望进行了工作。问题是我不希望用户访问文档控制器右上角的“操作”菜单。每当您从列表中选择一个文档时,它就会出现:

DocumentViewer Problem button

理想情况下,我希望将所有按钮一起删除,但是如果我可以禁用它或禁用其中的所有选项,也就足够了。我发现了这个问题:

Open in + UIDocumentInteractionController : how to filter options in SDK iOS 6 (canPerformActions is deprecated)

但是我不知道如何使用建议禁用菜单中的选项。我已经在这里上传了修改后的示例代码:

http://plasma.servebeer.com/DocSampleCode.zip

最后一点是,这将不会在App Store上发布,而是供私人使用,因此,如果有一种非官方的方式,那么我也很想知道。

非常感谢,谢谢您。

等离子

ios uidocumentinteraction
3个回答
2
投票

使用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版本中可能无法使用]


0
投票

创建QLPreviewController类后,您需要将rightBarButtonItem设置为nil。代码段:

QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.navigationItem.rightBarButtonItem = nil;

我确实下载了项目,执行后,“ Action”按钮未显示在顶部导航项中,而是显示在工具栏中。然后,在这种情况下,您将需要子类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

-1
投票

如果要隐藏按钮,则<< [快速语言中的iOS 10.0及更高版本无法使用给出答案。您可以使用WKWebView。希望它可以节省您的时间。

© www.soinside.com 2019 - 2024. All rights reserved.