我只是想去找QLPreviewController.view实际上,我想在它的视图上捕捉一个点击事件,以显示/隐藏工具栏等。我正在尝试:
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可以很好地工作。
我试图附加一个透明的覆盖视图,并在上面添加手势识别器,但没有成功。嗯,我看到一些应用程序实现了这样的功能,所以很明显这是可能的,但如何实现呢?对不起,我用谷歌搜索了一整天,也没有找到任何解决方案。请帮帮我。
发布于 2011-11-23 09:42:02
我发现这里没有一个答案是可行的,但我找到的答案是对QLPreviewController进行子类化并覆盖viewDidAppear:
- (void)viewDidAppear:(BOOL)animated
{
UITapGestureRecognizer *gestTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)];
gestTap.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:[gestTap autorelease]];
}发布于 2011-09-14 16:27:17
在您的解决方案中,QLPreviewController的视图还会受到影响吗?我试着做一些类似的事情(我从QLPreviewController窃取视图来使用它),看起来我的覆盖视图不会让任何东西通过它背后的视图。
发布于 2014-03-07 01:29:34
我今天一直在解决这个问题,覆盖-(void)contentWasTappedInPreviewContentController:(id)item {}的建议已经很接近了,但是当你这样做的时候,你就会搞乱预览控制器的处理。
因此,我不再重写该方法,而是创建了一个RAC信号,该信号在调用该方法时触发。这不会影响QL的默认行为。我是在QLPreviewController的一个子类中这样做的,但这不应该是必要的。
我的类中有一个属性:
@property RACSignal *contentTapped;然后在我的QLPreviewController子类的初始化方法中:
_contentTapped = [self rac_signalForSelector:@selector(contentWasTappedInPreviewContentController:)];现在,在另一个类中,甚至在内部,您可以像这样使用信号:
previewController.contentTapped subscribeNext:^(id x) {
// Put your handler here!
}];https://stackoverflow.com/questions/6091027
复制相似问题