2012-05-15 132 views
5

好了,我所要做的就是創建一個文檔查看器類似這樣的畫面: enter image description here定製QLPreviewController或UIDocumentInteractionController可以攔截觸摸事件

基本上應該發生的事情是,當屏幕的任何地方挖掘,頂部和底部的欄會出現。再次點擊,它們消失。

我已將子類型QLPreviewController設法利用已與QLPreviewController一起提供的(頂部)導航欄。這工作正常。現在,我需要在顯示頂部欄時顯示底部欄。我可以在頁面底部添加一個UIToolbar,但我需要攔截觸摸事件,以便隱藏/取消隱藏底部欄。我似乎無法弄清楚如何讓它起作用。我試圖將UITapGestureRecognizer添加到QLPreviewController子類本身的視圖中,但沒有運氣。我也嘗試創建覆蓋UIView,它具有UITapGestureRecognizer但阻止了用戶表單與下面的文檔進行交互。

任何人都有任何想法如何做到這一點?提前致謝!

回答

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仍將接收所有其他非輕拍觸摸事件,以便用戶仍然可以與文檔

0

子類QLPreviewController互動,然後覆蓋

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

就是這樣!

+0

不幸的是,這似乎並不是一個有價值的解決方案,因爲蘋果認爲它是一個私有API。請參閱http://stackoverflow.com/questions/6091027/qlpreviewcontrollers-view#comment34156919_22231721 – Lifely

相關問題