首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QLPreviewController的视图

QLPreviewController的视图
EN

Stack Overflow用户
提问于 2011-05-23 05:50:09
回答 6查看 5.4K关注 0票数 3

我只是想去找QLPreviewController.view实际上,我想在它的视图上捕捉一个点击事件,以显示/隐藏工具栏等。我正在尝试:

代码语言:javascript
复制
QLPreviewController* qlpc = [QLPreviewController new];
    qlpc.delegate = self;
    qlpc.dataSource = self;
    qlpc.currentPreviewItemIndex=qlIndex;
    [navigator pushViewController:qlpc animated:YES];
    qlpc.title = [path lastPathComponent];
    [qlpc setToolbarItems:[NSArray arrayWithObjects:self.dirBrowserButton,self.space, self.editButton, self.btnSend, nil] animated:YES];
    UITapGestureRecognizer* gestTap  = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)];
    gestTap.cancelsTouchesInView=NO;
    [qlpc.view addGestureRecognizer:[gestTap autorelease]];
    [qlpc release];

什么都不会发生

如果我将UITapRecognizer附加到navigationController.view上,只有当我触摸工具栏/导航栏时它才会触发。在这种情况下,UISwipeGestureRecognizer可以很好地工作。

我试图附加一个透明的覆盖视图,并在上面添加手势识别器,但没有成功。嗯,我看到一些应用程序实现了这样的功能,所以很明显这是可能的,但如何实现呢?对不起,我用谷歌搜索了一整天,也没有找到任何解决方案。请帮帮我。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-11-23 09:42:02

我发现这里没有一个答案是可行的,但我找到的答案是对QLPreviewController进行子类化并覆盖viewDidAppear:

代码语言:javascript
复制
- (void)viewDidAppear:(BOOL)animated
{ 
    UITapGestureRecognizer *gestTap  = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)];
    gestTap.cancelsTouchesInView = NO;
    [self.view addGestureRecognizer:[gestTap autorelease]];
}
票数 0
EN

Stack Overflow用户

发布于 2011-09-14 16:27:17

在您的解决方案中,QLPreviewController的视图还会受到影响吗?我试着做一些类似的事情(我从QLPreviewController窃取视图来使用它),看起来我的覆盖视图不会让任何东西通过它背后的视图。

票数 1
EN

Stack Overflow用户

发布于 2014-03-07 01:29:34

我今天一直在解决这个问题,覆盖-(void)contentWasTappedInPreviewContentController:(id)item {}的建议已经很接近了,但是当你这样做的时候,你就会搞乱预览控制器的处理。

因此,我不再重写该方法,而是创建了一个RAC信号,该信号在调用该方法时触发。这不会影响QL的默认行为。我是在QLPreviewController的一个子类中这样做的,但这不应该是必要的。

我的类中有一个属性:

代码语言:javascript
复制
 @property RACSignal *contentTapped;

然后在我的QLPreviewController子类的初始化方法中:

代码语言:javascript
复制
_contentTapped = [self   rac_signalForSelector:@selector(contentWasTappedInPreviewContentController:)];

现在,在另一个类中,甚至在内部,您可以像这样使用信号:

代码语言:javascript
复制
previewController.contentTapped subscribeNext:^(id x) {
    // Put your handler here!
}];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6091027

复制
相关文章

相似问题

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