2

私はスライドバーメニューに使用PKRevealControllerしています。フロントコントローラーにはテーブルビューがあり、各セルのスワイプが表示されなくなったときに表示される [削除] ボタンcanEditRowAtIndexPathを実装しているため、これを再び機能させるにはどうすればよいですか?PKRevealController

4

2 に答える 2

3

これを書いている時点では、考えられるすべての条件下で適切に動作するようにコントローラーの側でこれを修正する既知の方法は (少なくとも私には) ありません。つまり、上記のケースを自分で処理する必要があります。したがって、コントローラーはrevealPanGestureRecognizerプロパティを公開します。

簡単に言うと、コントローラーをインスタンス化するときに、オプション ディクショナリでこのオプションを渡します。

NSDictionary *options = @{
    PKRevealControllerRecognizesPanningOnFrontViewKey : @NO
};

これにより、正面図全体のパンベースの表示が無効になります。これで、releavePanGestureRecognizer を使用して、パンしたい任意のビューに追加して、ジェスチャ ベースのリビールを有効にすることができます。

(編集可能なセルを含むテーブルベースの環境で作業している場合)revealPanGestureRecognizerフロント ビュー コントローラーのナビゲーション バー (おそらくある) に を追加することをお勧めします。

[self.navigationController.navigationBar addGestureRecognizer:self.revealController.revealPanGestureRecognizer];

ほら、パンがテーブル ビューに干渉しなくなりました。

(これに関する詳細と根拠については、https://github.com/pkluz/PKRevealController/pull/76を参照してください)

--

注: UIGestureRecognizerDelegate プロトコル メソッドを使用してこれを処理する別の方法があります。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

UITableView に約 5 つのジェスチャ認識機能があり、セルの編集モードをグローバルに処理する方法を見ると、ちょっと面倒になることがありますが...

于 2013-01-30T16:53:21.780 に答える
1

これは、誰が使用したかで機能しますPkRevealController

self.revealController.frontViewController.revealController.recognizesPanningOnFrontView = NO;

これは私にとってはうまくいきました。

更新: ビュー コントローラーをプッシュしたところからコードを追加しました。現在、View Controller ではスライドのみが有効になり、他のクラスでは有効になりません。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if ([viewController isMemberOfClass:[ViewController class]])
        self.revealController.frontViewController.revealController.recognizesPanningOnFrontView = YES;
    else
        self.revealController.frontViewController.revealController.recognizesPanningOnFrontView = NO;
}

PKRevealcontroller をプッシュする必要があります。したがって、そのクラスからUINavigationControllerデリゲート メソッドを使用し、チェックを入れてこれらの行を追加します。

公開コントローラーの初期化中に Option パラメーターを使用できますが、それは私の目的全体を解決しませんでした。

于 2013-06-07T08:44:24.273 に答える