Ios UIPangestureRecognitor在侧菜单和UIPageViewController上拦截
向右滑动时会显示“左”菜单,向左滑动时会更改整个页面的选项卡 他们的UIPangEstureRecognitizer截获,我尝试过禁用UIPageViewController的UIScrollView的反弹,尝试过RequiremeEstureRecognitizer邮件: 但我不能让它们都起作用。我想要的是当它被刷到右边菜单出现时。当它向左滑动时,如果侧菜单打开,它将关闭,否则,页面将更改 我的示例代码如下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
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
}
}