我正在使用带有transitionStyle的UIPageViewControllerUIPageViewControllerTransitionStyleScroll
和导航方向UIPageViewControllerNavigationOrientationVertical
我也有一个UIPanGestureRecognizer
在视图上,我想在平移手势处于活动状态时禁用页面滚动。
我试图在手势开始时设置以下内容:
pageViewController.view.userInteractionEnabled = NO;
这似乎没有任何效果,或者似乎偶尔起作用。
我发现执行此操作的唯一其他方法(有效)是在平移手势运行时将 UIPageViewController dataSource 设置为 nil,但这会在重置 dataSource 时导致巨大的延迟。
UIPageViewController 使用一些 UIScrollView 对象来处理滚动(至少对于transitionStyleUIPageViewControllerTransitionStyleScroll
)。您可以通过控制器的子视图进行迭代pageViewController.view.subviews
为拿到它,为实现它。现在,您可以轻松启用/禁用滚动:
- (void)setScrollEnabled:(BOOL)enabled forPageViewController:(UIPageViewController*)pageViewController
{
for (UIView *view in pageViewController.view.subviews) {
if ([view isKindOfClass:UIScrollView.class]) {
UIScrollView *scrollView = (UIScrollView *)view;
[scrollView setScrollEnabled:enabled];
return;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)