防止UIPageViewController的滑动影响UISlider

我在其他方面看过这个问题,但没有一个答案适用于我的情况。 我有一个UIPageViewController有一个包含UISlider的子视图控制器。

当您尝试移动滑块时,它会激活页面视图控制器的滚动。 您必须点击,在滑块圆上暂停,然后移动。

UIPageViewController设置为滚动types,因此未设置gestureRecognizers。 (标头状态“只有过渡样式是'UIPageViewControllerTransitionStylePageCurl')填充。 因此,我甚至无法正确访问手势。

我已经尝试了几件事情,以防止UIPageViewController影响滑块,但无济于事。 我试过了:1)走子子树,并设置UIScrollView的平移手势委托给自己(这会导致崩溃)2)在顶部添加我自己的手势,并检查y值。 这将防止滑动,但它也吃龙头和移动,所以滑块实际上并没有如预期的那样改变3)实现了自定义滑块的自定义手势。 问题是我无法匹配的平移手势改变滑块在相同的默认值。 既然你必须实现平移,并自己调整位置,那么很难匹配真实的行为。

这些方法都不适用于我。 有没有人能够解决这个问题? 我能想到的唯一解决scheme是防止一起滚动,添加左/右button,并相应地编程转换页面。

试试这个代码:

UIPageViewController *pageViewController = self.parentViewController; for (UIView *scrollView in pageViewController.view.subviews) { if ([scrollView isKindOfClass:[UIScrollView class]]) { [(UIScrollView *)scrollView setDelaysContentTouches:NO]; } } 

我认为最好的解决scheme是重新deviseUI,不要在UIPageViewController上水平滚动/滑动UIPageViewController 。 用户将已经习惯于在UIPageViewController任何地方进行水平滑动,如果这种行为发生了变化,这可能会令人困惑/沮丧。

Interesting Posts