我的应用程序中有一个 UIPageViewController
,设置如下:
self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MainPageViewController"];
self.pageViewController.dataSource = self;
self.pageViewController.delegate = self;
self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
[self addChildViewController:self.pageViewController];
[self.view addSubview:self.pageViewController.view];
[self.pageViewController didMoveToParentViewController:self];
我已使我的 UIViewController
符合 UIScrollViewDelegate
并添加此代码以将 scrollView 委托(delegate)设置为 self
:
for (UIView *currentView in self.pageViewController.view.subviews) {
if ([currentView isKindOfClass:[UIScrollView class]]) {
UIScrollView *scrollView = (UIScrollView *)currentView;
scrollView.delegate = self;
break;
}
}
然后我尝试使用此方法查找当前页面,尽管每次滚动 UIPageViewController
时 contentOffset
都保持不变:
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
CGFloat pageWidth = scrollView.frame.size.width;
NSInteger page = scrollView.contentOffset.x / pageWidth;
NSLog(@"Content offset.x: %.f", scrollView.contentOffset.x);
}
这是为什么?
最佳答案
我使用 UIPageViewController
的委托(delegate)方法而不是 scrollView 使其工作。这是我的解决方案:
-(void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray<UIViewController *> *)previousViewControllers transitionCompleted:(BOOL)completed
{
if (completed) {
NSInteger currentIndex = [self.navViewControllers indexOfObject:pageViewController.viewControllers[0]];
}
}
关于ios - 内容偏移量保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35033023/