0

當向右滑動時,我已經離開菜單,並且在向左滑動整個頁面時我希望我的標籤更改。SideMenu和UIPageViewController上的UIPanGestureRecognizer截取

他們UIPanGestureRecognizer攔截,我已經試過禁用UIPageViewController的UIScrollView中的反彈,試圖requireGestureRecognizerToFail:

但我不能讓它的兩個人的作品。我想要的是當它被刷到右側菜單時出現。如果側面菜單打開,它將被移動到左側,否則頁面將會改變。

我的示例代碼如下;

for(UIScrollView *view in self.pageViewController.view.subviews) 
{ 
    if ([view isKindOfClass:[UIScrollView class]]) 
    { 
     UIScrollView *scrollView = (UIScrollView *)view; 

     AppDelegate *appDel = [UIApplication sharedApplication].delegate; 

     UIPanGestureRecognizer* panGestureRecognizer = scrollView.panGestureRecognizer; 
     [panGestureRecognizer addTarget:self action:@selector(move:)]; 
     [panGestureRecognizer requireGestureRecognizerToFail:appDel.slidingViewController.panGesture]; 
    } 
} 

在此先感謝

回答

0

類似下面應該工作(警告:未經測試!)

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panRecognized:)]; 
    panRecognizer.delegate = self; 

    for (UIGestureRecognizer *recognizer in self.pageViewController.gestureRecognizers) 
     [recognizer requireGestureRecognizerToFail:panRecognizer]; 
} 

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)recogniser 
{ 
    if (self.leftMenuShowing) 
     return YES; 
    else 
    { 
     UIPanGestureRecognizer *panRecognizer = (id)recognizer; 
     CGPoint translation = [panRecognizer translationInView:self.view]; 
     return (translation.x > 0); 
    } 
} 

- (void)panRecognized:(UIPanGestureRecognizer *panRecognizer) 
{ 
    if (state == UIGestureRecognizerStateBegan || state == UIGestureRecognizerStateChanged) 
    { 
     // if pan is to left, move leftMenu offscreen 
     // if pan is to right, move leftMenu onscreen 
    } 
    else 
    { 
     // if leftMenu is mostly onscreen, animate completely onscreen 
     // if leftMenu is mostly offscreen, animate completely offscreen 
    } 
}