web-dev-qa-db-ja.com

ジェスチャレコグナイザーを使用すると、テーブルビューがスクロールしません

私のアプリにはテーブルビュー(もちろんスクロールインあり)があり、このビューはジェスチャーレコグナイザー(Facebookアプリのように)でスライドしてオンとオフを切り替えます。

ボタンを使用して[テーブルビューを画面に]スライドさせると正常に機能しますが、ジェスチャレコグナイザーを使用すると、テーブルビューをスクロールできなくなります。

問題のあるジェスチャレコグナイザーのコードは次のとおりです。

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

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

21
user2576304

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

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

self.slidingViewController.panGesture.delegate = self;

また、実装するプロトコルのリストに<UIGestureRecognizerDelegate>を追加します

45
Wain

UItableviewでパンジェスチャを使用しましたが、このジェスチャを回避するために、デリゲートの下で使用しました。

//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
}
12
Pravin Kulkarni

これがSwiftバージョン:

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

テーブルビューで長押しジェスチャを定義し、長押​​しするとテーブルをスクロールできないという同じ問題がありました。

修正者:

1- UIGestureRecognizerDelegateを追加します

2- gesture.delegate = self (after you defined the long press gesture)を追加します

3-この関数の追加:

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

4
MaziB

正しければ、ジェスチャレコグナイザーを追加するビューはテーブルビューです。デフォルトでは、UIScrollView(および暗黙的にUITableView)クラスはスクロールにパンジェスチャレコグナイザーを使用し、ジェスチャレコグナイザーはそれを妨害します。テーブルビューのコンテナとして別のビューを使用していて、それにパンジェスチャレコグナイザーを追加している場合は、機能するはずです。

1
alexbumbu