0

我在我的应用程序中使用 MFSideMenu,我只能在导航栏上使用平移手势来显示菜单。我希望它可以在整个屏幕上工作,就像在 facebook 应用程序上一样。!

我试过改变这一行(MFSideMenuManager.m 中的 l.39)

[controller.navigationBar addGestureRecognizer:recognizer];

对此:

[controller.view addGestureRecognizer:recognizer];

但它只是行不通。

你知道我应该编辑什么让它工作吗?

感谢您的帮助

4

2 回答 2

3

我终于成功地让它工作了。该手势实际上已经实现,但仅在菜单隐藏时才有效。我们必须删除 2 个条件以确保它可以双向工作

MFSideMenuManager.m 中有两行需要编辑

在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 回答