3

私は自分のアプリケーションでECSlidingViewControllerGestureRecognizerを使用しています。次のようなものがあります。

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

そして、TableViewのスクロールを妨げています。そのラインスクロールを削除すると、正常に動作します。私のアプローチの何が問題になっていますか?

注:TableViewは、Navigation Controller の一部です。そして、私はStoryBoardsを使用しています。

4

3 に答える 3

11

ではなく、UIGestureRecognizerのビューにを追加する必要があります。UINavigationControllerUITableView

これを行う 1 つの方法はUINavigationController、ジェスチャ レコグナイザーの作成と、ECSlidingViewController の underLeft (または underRight) ビュー コントローラーのインスタンス化の両方を処理するサブクラスを作成することです。

// MyNavigationController.h
@interface MyNavigationController : UINavigationController

@end

// MyNavigationController.m
@implementation MyNavigationController

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    if (![self.slidingViewController.underLeftViewController isKindOfClass:[MyLeftMenuViewController class]]) {
        self.slidingViewController.underLeftViewController  = [self.storyboard instantiateViewControllerWithIdentifier:@"MenuViewController"];
    }

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

@end

ストーリーボード エディターを開き、ナビゲーション コントローラーを選択し、Identity Inspector の Custom Class フィールドをMyNavigationController(デフォルトではなくUINavigationController) に設定します。

于 2013-01-26T03:24:10.217 に答える
6

あなたが提案したアプローチを試しましたが、 UINavigationController のサブクラス内にジェスチャ認識エンジンを挿入しても機能しませんでした。奇妙なことに、理論的に同等の

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

TableviewControllerviewWillAppear:メソッドでは、代わりにトリックを行います。

于 2013-07-05T15:29:33.817 に答える