私は独自のソリューションを実装しました。PKRevealControllerスワイプ操作を許可および禁止する場合に別の解決策が必要だったため、実際には 2 つの解決策がありました。
ケース 1 :setRecognizesPanningOnFrontView:NO
このケースは非常に簡単です。メソッドUISwipeGestureRecognizerを呼び出すa を追加するだけです。back
UISwipeGestureRecognizer *backSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(back)];
[backSwipe setDirection:UISwipeGestureRecognizerDirectionRight];
[self.view addGestureRecognizer:backSwipe];
ケース 2 :setRecognizesPanningOnFrontView:YES
これは少し複雑です。ジェスチャ認識エンジンの競合を避けるために、私はPKRevealControllerのジェスチャ認識エンジンを利用する必要がありました。もちろん、これを実装しPKRevealControllerたのはleftViewController.
そのため、戻るスワイプ ナビゲーションを実装するクラスを通知のリスナーとして登録します。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(back:)
name:NOTIFICATION_BACK_SWIPE
object:self];
次に、PKRevealController.m ファイルの- (void)moveFrontViewRightwardsIfPossibleメソッドで、通知を投稿するだけです。
[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_BACK_SWIPE object:[(UINavigationController *)self.frontViewController topViewController]];
ここでは、通知のオブジェクトとして受信者自身を渡していUIViewControllerます。特定のUIViewControllerインスタンスのみがこの通知に反応するように、これを行っています。そうしないとUIViewControllers、UINavigationControllerスタック内にこの通知を受信するためにサブスクライブしているものがさらにある場合、それらはすべてUINavigationControllerto を引き起こしpopViewController、これが 1 回だけ発生するようにしたいのに、ランダムな数のステップが戻ることになります。
それでおしまい。楽しみ。