QuickLook,删除除完成按钮之外的所有工具栏按钮

时间:2013-02-20 19:21:32

标签: ios xcode quicklook qlpreviewcontroller

我使用Quicklook显示一些PDF文件,用户需要只看到该文件然后单击“完成”。默认UI提供更多选项,如复制或打印电子邮件。 UI还显示完成按钮旁边的箭头,可以导航到其他可用文件。 我需要删除这两个(隐藏)。 现在我浏览了一下,大多数帖子都谈到了继承QLPreviewController,并自定义新类。所以我这样做的方式如下:

  @interface MyQLViewer : QLPreviewController <QLPreviewControllerDataSource, QLPreviewControllerDelegate> {

}

并在.m文件中

- (void)viewWillAppear:(BOOL)animated
{
   [super viewWillAppear:animated];
   [[self navigationItem] setRightBarButtonItem:nil];
}

现在在我自己的项目中,我在xib的viewdidload事件中有一个MyQLViewer属性,我[MyQLViewer alloc] init]。

这不起作用。我错过了什么?

感谢。

enter image description here

1 个答案:

答案 0 :(得分:1)

据我所知,不再可能使用iOs 6禁用右键 你可以在这里读更多关于它的内容: http://www.cimgf.com/2012/07/11/a-better-fullscreen-asset-viewer-with-quicklook/

更新: 这个解决方法适合我。 如果文档加载需要很少的瞬间

,则延迟调用会导致重新添加
- (void)removeActionButton  {

    if(removeShareCounter > 13){
        [removeButtonTimer invalidate];

    }
    else{
        //iOs doesn't support setRightBarButtonItem to nil
        if ([self iOsEqual:6]) {
            [self inspectSubviewsForView:self.view];
        }
        else{
            [self.navigationItem setRightBarButtonItem:nil animated:NO];
        }
        removeShareCounter++;
    }
}

- (void)inspectSubviewsForView:(UIView *)view
{
    if(view != NULL){
        if ([view isKindOfClass:[UINavigationBar class]])
        {
            UINavigationBar *bar = (UINavigationBar *)view;
            if ([[bar items] count] > 0)
            {
                UINavigationItem *navItem = [[bar items] objectAtIndex:0];
                [self performSelectorOnMainThread:@selector(removeShareButton:) withObject:navItem waitUntilDone:YES];
            }
        }
        else{
            for (UIView *subView in view.subviews) {
                [self inspectSubviewsForView:subView];
            }    
        }
    }
}

-(void)removeShareButton: (UINavigationItem *)navItem{
    [navItem setRightBarButtonItems:nil animated:NO];
}