6

好的,所以我要做的是创建一个类似于这张图片的文档查看器: 在此处输入图像描述

基本上应该发生的是,当在任何地方点击屏幕时,都会出现顶部和底部栏。再次点击,它们就会消失。

我已经进行了子类QLPreviewController化,并设法利用了已经附带的(顶部)导航栏QLPreviewController。这工作正常。现在我需要在显示顶部栏时显示底部栏。我可以UIToolbar在页面底部添加一个,但我需要拦截触摸事件,以便隐藏/取消隐藏底部栏。我似乎无法弄清楚如何让它工作。我尝试将 a 添加到子类本身UITapGestureRecognizer的视图中,但没有成功。QLPreviewController我还尝试创建一个覆盖UIViewUITapGestureRecognizer但它阻止了用户表单与下面的文档交互。

有人对如何做到这一点有任何想法吗?提前致谢!

4

2 回答 2

3

好的,我弄清楚了UITapGestureRecognizer. 您需要将委托设置为自我,然后覆盖

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

函数并返回是。所以在我的 QLPreviewController 子类中,我实现了 UIGestureRecognizerDelegate,并在 viewWillAppear 中:

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(documentTapped:)];
tapGesture.cancelsTouchesInView = NO;
tapGesture.delegate = self;
[self.view addGestureRecognizer:[tapGesture autorelease]];

然后简单地说:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}

这样,QLPreviewController 仍将接收所有其他非点击触摸事件,以便用户仍然可以与文档交互

于 2012-05-16T01:39:11.060 回答
0

子类化QLPreviewController然后覆盖

-(void)contentWasTappedInPreviewContentController:(id)item {}

就是这样!

于 2014-02-06T16:32:55.827 回答