私は独自のソリューションを実装しました。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
スタック内にこの通知を受信するためにサブスクライブしているものがさらにある場合、それらはすべてUINavigationController
to を引き起こしpopViewController
、これが 1 回だけ発生するようにしたいのに、ランダムな数のステップが戻ることになります。
それでおしまい。楽しみ。