好的,所以我要做的是创建一个类似这张图片的文档查看器:
基本上应该发生的是,当在任何地方点击屏幕时,将出现顶部和底部栏。再次点击它们就会消失。
我已将QLPreviewController
子类化,并设法利用QLPreviewController
附带的(顶部)导航栏。这很好用。现在,我需要在显示顶部栏时显示底栏。我可以在页面底部添加UIToolbar
,但我需要拦截触摸事件,以便隐藏/取消隐藏底栏。我似乎无法弄清楚如何让它工作。我尝试将UITapGestureRecognizer
添加到QLPreviewController
子类本身的视图中,但没有运气。我还尝试创建一个覆盖UIView
,其中包含UITapGestureRecognizer
,但却阻止用户表单与下面的文档进行交互。
对于如何做到这一点,任何人都有任何想法?提前谢谢!
答案 0 :(得分:3)
好的,我弄清楚UITapGestureRecognizer
的问题是什么。您需要将委托设置为self,然后覆盖
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
功能并返回yes。所以在我的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仍然会收到所有其他非抽头触摸事件,这样用户仍然可以与文档进行交互
答案 1 :(得分:0)
子类QLPreviewController
然后覆盖
-(void)contentWasTappedInPreviewContentController:(id)item {}
就是这样!