0

アプリケーションで MFSideMenu を使用しており、ナビゲーション バーでのみパン ジェスチャを使用してメニューを表示できます。Facebookアプリのように、画面全体で動作させたいです。

この行を変更してみました (MFSideMenuManager.m の l.39)

[controller.navigationBar addGestureRecognizer:recognizer];

これに:

[controller.view addGestureRecognizer:recognizer];

しかし、それはうまくいきません。

それが機能するために何を編集する必要があるかについて何か考えがありますか?

ご協力ありがとうございました

4

2 に答える 2

3

私はついにそれを機能させることに成功しました。ジェスチャは実際には既に実装されていますが、メニューが非表示の場合にのみ機能します。両方の方法で機能するようにするには、2 つの条件を削除する必要があります。

MFSideMenuManager.m には編集する行が 2 つあります。

GestureRecognizerShouldBegin: メソッド内

    if([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
        if([gestureRecognizer.view isEqual:self.navigationController.view] && 
           self.navigationController.menuState != MFSideMenuStateHidden) return YES;

になる

    if([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
        if([gestureRecognizer.view isEqual:self.navigationController.view]) return YES;

navigationControllerPanned: メソッドで、 if 行を削除するだけです

- (void) navigationControllerPanned:(id)sender {
    if(self.navigationController.menuState == MFSideMenuStateHidden) return;

    [self handleNavigationBarPan:sender];
}

になる

- (void) navigationControllerPanned:(id)sender {
    [self handleNavigationBarPan:sender];
}

そしてそれはうまくいきます!

ライブラリを編集するのはあまり良い方法ではありませんが、MFSideMenu にブール値のオプションを追加して構成可能にしたい場合は簡単です。

于 2012-08-24T10:01:48.673 に答える
0

MFSideMenuManager はわかりませんが、バーがドラッグ可能な場合は、線のある UIPanGestureRecognizer があると思います

[self.navigationController.navigationBar addGestureRecognizer:gestureRecognizer];

したがって、ナビゲーション バーをナビゲーション コントローラー全体のビューに置き換えるだけです。

[self.navigationController.view addGestureRecognizer:gestureRecognizer];
于 2012-08-23T22:07:35.610 に答える