Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIPangestureRecognitor在侧菜单和UIPageViewController上拦截_Ios_Objective C_Uiscrollview_Uipageviewcontroller_Uipangesturerecognizer - Fatal编程技术网

Ios UIPangestureRecognitor在侧菜单和UIPageViewController上拦截

Ios UIPangestureRecognitor在侧菜单和UIPageViewController上拦截,ios,objective-c,uiscrollview,uipageviewcontroller,uipangesturerecognizer,Ios,Objective C,Uiscrollview,Uipageviewcontroller,Uipangesturerecognizer,向右滑动时会显示“左”菜单,向左滑动时会更改整个页面的选项卡 他们的UIPangEstureRecognitizer截获,我尝试过禁用UIPageViewController的UIScrollView的反弹,尝试过RequiremeEstureRecognitizer邮件: 但我不能让它们都起作用。我想要的是当它被刷到右边菜单出现时。当它向左滑动时,如果侧菜单打开,它将关闭,否则,页面将更改 我的示例代码如下 for(UIScrollView *view in self.pageViewCon

向右滑动时会显示“左”菜单,向左滑动时会更改整个页面的选项卡

他们的UIPangEstureRecognitizer截获,我尝试过禁用UIPageViewController的UIScrollView的反弹,尝试过RequiremeEstureRecognitizer邮件:

但我不能让它们都起作用。我想要的是当它被刷到右边菜单出现时。当它向左滑动时,如果侧菜单打开,它将关闭,否则,页面将更改

我的示例代码如下

 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];
    }
 }

提前感谢

类似于以下内容的功能应该可以正常工作(警告:未测试!)

- (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
    }
}