2014-11-22 4 views
1

내 응용 프로그램에서 MMDrawerController를 사용하려고하는데 중앙 서랍의 제스처를 닫을 수 없습니다. 내 응용 프로그램에서 다른 곳에서 큰 성공을 거둔 MMDrawerController를 사용했지만이 경우 작동하지 않는 이유를 알아낼 수 없습니다.MMDrawerController 서랍을 닫을 수 없습니다.

최상위보기 컨트롤러는 기본보기 컨트롤러가 MasterViewController (아래 소스) 인 UINavigationController입니다. 이 클래스는 MMDrawerController를 확장하고 원하는 (중앙 및 오른쪽, 제스처, 최대 너비) 뷰를 구성합니다. 가운데보기에는 서랍을 여는 단추가 있습니다. 서랍이 열리면 중심 뷰에서 제스처로 닫을 수 없습니다. 서랍에 버튼을 추가하고 프로그램 방식으로 서랍을 닫을 수 있지만 중심 뷰에서 탭/팬 할 수 있어야합니다.

클래스 MasterViewController : MMDrawerController {

override func viewDidLoad() { 
    let centerView = storyboard!.instantiateViewControllerWithIdentifier("CenterControllerName") as? CenterControllerType 
    super.setCenterViewController(centerView, withCloseAnimation: false, completion: nil) 
    let drawer = storyboard!.instantiateViewControllerWithIdentifier("Drawer") as? DrawerType 
    super.rightDrawerViewController = drawer 
    super.setMaximumRightDrawerWidth(200, animated: true, completion: nil) 
    super.closeDrawerGestureModeMask = MMCloseDrawerGestureMode.PanningCenterView | MMCloseDrawerGestureMode.TapCenterView 
} 

}

서랍을 열 수있는 기능 :

@IBAction func drawerButtonPressed(sender: AnyObject) { 
    drawer?.openDrawerSide(MMDrawerSide.Right, animated: true, completion: nil) 
} 

답변

0

나는 유일한 개체로 ContainerView을 배치하여이 문제를 해결 할 수 있었다 내보기에서 다음 내 ViewController에서 MMDrawerContainer 구성. 그것은 옳은 대답처럼 보이지는 않지만 모든 것이 사용자의 관점에서 보입니다. 좋아

+0

랜디, 꽤 많은 시간 이래로 같은 문제가 있습니다. 솔루션과 관련하여 더 많은 정보를 제공 할 수 있습니까? 감사합니다 –

+0

그리고 제스처가 주어진 VC에 대해 정의되었다는 사실 때문에 문제가 발생하지만 서랍을 열면 현재 VC가 새 VC로 변경되고 이전 VC는 표시되지만 상호 작용할 수 없습니다 –

+0

함께 알았어. 고맙네, 도나가 대답 해. –

0

그래서 난 같은 문제로 실행하고 나는이에서 오는 것을 거의 확신 :

guddrawing.png

좋아, (별 포함) VC1은 우리의 응용 프로그램 홈이의 VC2입니다 왼쪽 서랍 및 VC3은 DrawerController입니다.

오랫동안 나는 VC1과 VC2에 제스처 기능을 넣으려고 시도했지만 VC1에서는 열어 보았고 VC2에서는 닫으면 작동했습니다. 내가 VC1에 사용 기능 :

let rightSwipe = UISwipeGestureRecognizer(target: self, action: Selector("showDrawer:")) 

rightSwipe.direction = .Right 
view.addGestureRecognizer(rightSwipe) 

... 

    func showDrawer(sender: UISwipeGestureRecognizer) { 
    if let m = mmdc { 
     if !m.isLeftDrawerOpen() { 
     m.toggleDrawerSide(MMDrawerSide.Left, animated: true, completion: nil) 
     } 
    } 
    } 

그리고 VC2에서하지만 LeftSwipe와 closeDrawer와 같은 하나.

솔루션은 VC3 (DrawerController)에 이러한 기능과 제스처 인식기를 둘 다 넣습니다.

제스처가 주어진 VC에 대해 정의된다는 사실 때문에 문제가 발생하지만 서랍을 열면 현재 VC가 새 VC로 변경되고 이전 VC는 표시되지만 표시되지는 않습니다 interactif. VC1/VC2의 parentVC에 항목을 넣으면 문제가 해결됩니다.

관련 문제