6

さて、私がやろうとしているのは、この図に似たドキュメント ビューアーを作成することです。 ここに画像の説明を入力

基本的には、画面のどこかをタップすると上下のバーが表示されるはずです。もう一度タップすると消えます。

私はサブクラス化QLPreviewControllerし、すでに付属している (トップ) ナビゲーション バーを活用することができましたQLPreviewController。これはうまくいきます。ここで、トップ バーが表示されるたびにボトム バーを表示する必要があります。ページの下部にa を追加できUIToolbarますが、下部のバーを非表示/非表示にできるようにタッチ イベントをインターセプトする必要があります。私はそれを機能させる方法を理解できないようです。サブクラス自体UITapGestureRecognizerのビューにa を追加しようとしましたが、うまくいきませんでした。また、ユーザーフォームが下のドキュメントと対話するのを妨げるオーバーレイをQLPreviewController作成しようとしました。UIViewUITapGestureRecognizer

誰でもこれを行う方法について何か考えがありますか? 前もって感謝します!

4

2 に答える 2

3

わかりました、私は問題が何であるかを理解しましたUITapGestureRecognizer. デリゲートを自分自身に設定してから、

- (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 は他のすべての非タップ タッチ イベントを引き続き受信するため、ユーザーは引き続きドキュメントを操作できます。

于 2012-05-16T01:39:11.060 に答える
0

サブクラスQLPreviewController化してからオーバーライドする

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

それでおしまい!

于 2014-02-06T16:32:55.827 に答える