首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >UIDocumentInteractionController删除操作菜单

UIDocumentInteractionController删除操作菜单
EN

Stack Overflow用户
提问于 2016-01-31 17:23:14
回答 3查看 3.8K关注 0票数 2

我一直在使用Apple示例代码从这里查看文档:

txt.html

我已经删除了所有我不需要的部分,并使它能够按我所希望的方式工作。问题是我不希望用户访问右上角的"Actions“菜单。每当从列表中选择文档时,都会出现这种情况:

理想情况下,我想全部删除按钮,虽然如果我可以禁用它或禁用里面的所有选项,这也就足够了。我发现了这个问题:

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

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

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

最后一个注意事项是,这不会出现在App上,它是私人使用的,所以如果有一种非官方的方法,那么我也有兴趣知道这一点。

如能提供任何帮助,我们将不胜感激。

等离子体

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-04 11:36:22

使用UINavigationControllerDelegate

代码语言:javascript
代码运行次数:0
运行
复制
@interface DITableViewController () <UIDocumentInteractionControllerDelegate, UINavigationControllerDelegate>

将navigationController委托分配给self

代码语言:javascript
代码运行次数:0
运行
复制
- (void)viewDidLoad {

    [super viewDidLoad];
    self.navigationController.delegate = self;
}

改变documentInteractionControllerViewControllerForPreview

代码语言:javascript
代码运行次数:0
运行
复制
- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)interactionController {

    return self.navigationController;
}

添加此UINavigationControllerDelegate方法

代码语言:javascript
代码运行次数:0
运行
复制
// 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上。

代码语言:javascript
代码运行次数:0
运行
复制
- (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];
    }
}

注:这在iOS的未来版本中可能行不通。

票数 3
EN

Stack Overflow用户

发布于 2016-02-04 07:17:51

创建QLPreviewController类之后,需要将rightBarButtonItem设置为零。代码片段:

代码语言:javascript
代码运行次数:0
运行
复制
QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.navigationItem.rightBarButtonItem = nil;

我确实下载了项目,执行后,"Action“按钮不是显示在顶部的导航项中,而是显示在工具栏中。然后,在这种情况下,您需要对QLPreviewController进行子类化,并覆盖viewWillAppear,如下所示。

代码语言:javascript
代码运行次数:0
运行
复制
@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
票数 0
EN

Stack Overflow用户

发布于 2020-03-31 17:22:23

如果您想隐藏按钮,则给出答案将不适用于iOS 10.0及以上版本的Swift language。您可以使用WKWebView。希望它能节省你的时间。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35116820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档