2012-08-23 96 views
0

我在我的應用程序中使用MFSideMenu,並且我只能在導航欄上使用平移手勢顯示菜單。我希望它可以在整個屏幕上工作,就像在Facebook應用程序中一樣。MFSideMenu全尺寸平移手勢

我試圖改變這一行(L.39在MFSideMenuManager.m)

[controller.navigationBar addGestureRecognizer:recognizer]; 

這樣:

[controller.view addGestureRecognizer:recognizer]; 

,但它只是將無法正常工作。

你有什麼想法,我應該編輯它的工作?

謝謝您的幫助

回答

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來使其可配置,這很容易。

0

我不知道MFSideMenuManager但如果欄拖動我希望它有一個UIPanGestureRecognizer帶線

[self.navigationController.navigationBar addGestureRecognizer:gestureRecognizer]; 

所以,你要做的就是更換導航欄與整個導航控制器的視圖

[self.navigationController.view addGestureRecognizer:gestureRecognizer]; 
+0

這就是我以前的嘗試,但不幸的是它沒有奏效。不管怎麼說,多謝拉 –