我的UIPageViewController
上有2个VC。
我希望如果用户在第一个视图中,他将无法向右滑动(仅向左 - 到第二个视图),如果他在第二个视图中看来他不能向左滑动(就在右边 - 到第一个视图)。
我希望用户无法滚动 - 不是黑色视图(当我返回nil时会发生什么:- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController)
答案 0 :(得分:1)
首先将VC设置为PageViewController的内部滚动视图的委托。您可以在此处添加更复杂的子视图遍历,这是一个简单的版本:
for (UIView *view in self.pageViewController.view.subviews) {
if ([view isKindOfClass:[UIScrollView class]]) {
[(UIScrollView *)view setDelegate:self];
}
}
然后在VC中添加一个属性:
@property (nonatomic) CGPoint lastOffset;
之后实现以下滚动视图委托方法
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
scrollView.scrollEnabled = YES;
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
scrollView.scrollEnabled = YES;
self.lastOffset = scrollView.contentOffset;
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint nowOffset = scrollView.contentOffset;
NSLog(@"delta %f", self.lastOffset.x - nowOffset.x);
if ((self.lastOffset.x - nowOffset.x) < 0) {
//uncomment to prevent scroll to left
//scrollView.scrollEnabled = NO;
} else if ((self.lastOffset.x - nowOffset.x) > 0) {
//uncomment to prevent scroll to right
//scrollView.scrollEnabled = NO;
} else {
scrollView.scrollEnabled = YES;
}
}