2013-07-12 20 views
13

私のアプリは表ビュー(もちろんスクロールイン)を持ち、このビューはジェスチャ認識機能(Facebookアプリのような)でスライドしたりスライドしたりします。ジェスチャ認識機能を使用するとテーブルビューがスクロールしません

[テーブルビューを画面にスライドさせる]ボタンを使用するとうまくいきますが、ジェスチャ認識機能を使用するとテーブルビューをスクロールできなくなります。ここで

が問題とジェスチャー認識のコードです:

[self.view addGestureRecognizer:self.slidingViewController.panGesture]; 

誰かがアイデアを持っていますか?

答えて

33

ジェスチャは、デフォルトでは一度に1つのジェスチャしか認識できないため、スクロールビュージェスチャが機能しない可能性があります。あなたのジェスチャーと実装の委譲として自分自身を追加してみてください:

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

self.slidingViewController.panGesture.delegate = self; 

も、私は右のあなたの見解をそれを得る場合は、

+0

この回答にはありがとうございます!しかし、私はxcodeの専門家ではないので、私はこのコードを実装した後に何をする必要がありますか? – user2576304

+0

あなたはコントローラをジェスチャの 'delegate'として追加し、上記のメソッドを実装しましたが、まだ問題はありますか? – Wain

+0

コントローラをデリゲートとして追加するにはどうすればよいですか?この代理人の概念は私には分かりません – user2576304

1

を実装するプロトコルのリストに<UIGestureRecognizerDelegate>を追加ジェスチャ認識器をに追加すると、テーブルビューになります。デフォルトでは、UIScrollView(暗黙的にはUITableView)のクラスでは、スクロールにパンジェスチャ認識機能が使用され、ジェスチャ認識機能が干渉します。別のビューをテーブルビューのコンテナとして使用し、パンジェスチャ認識機能を追加する場合は、それが機能するはずです。

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
    return true 
} 
5

はここで迅速なバージョンです。

によって固定

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {return true}

2

私はテーブルビューに長押しジェスチャーを定義し、その上にI長押しテーブルをスクロールすることができないのと同じ問題があった:

+0

ジェスチャーレコグナイザーがカスタムラベルクラスでtableviewで使用されているときにこれをどのように適応させるかに関する推奨事項はありますか? : - | –

4

を、私は私の中でUIPangestureを使用しています。この機能を追加すること gesture.delegate = self (after you defined the long press gesture)

3-追加 UIGestureRecognizerDelegate

2-追加

の1- UItableviewとavoへidこのジェスチャー私は代理人の下で使用しました

//This method helped me stopped up/down pangesture of UITableviewCell and allow only vertical scroll 
override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool { 
    if let panGestureRecognizer = gestureRecognizer as? UIPanGestureRecognizer { 
     let translation = panGestureRecognizer.translationInView(superview) 
     if fabs(translation.x) > fabs(translation.y) { 
      return true 
     } 
     return false 
    } 
    return false 
} 
関連する問題