UIPageViewController過渡頁面捲曲廣告素材我已經搜索了很多沒有成功發佈前:與UIScrollView的錯誤頁索引
我UIPageViewController用的UIViewController和頁面捲曲廣告素材的數組作爲過渡。
每個UIViewController由UIScrollView和UIWebView組成。
加載內容後基於webview高度計算的滾動高度。
現在,當我加載UIPageViewController並啓動UIViewController之間的導航而不滾動內容時,每件事情都能正常工作。但是,如果我滾動任何頁面,然後導航到下一頁或上一頁。它將重新顯示相同的頁面,然後再次正常工作。
我已經測試了IOS7和iOS8上:
UIPageViewController viewDidLoad方法:
self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
NSArray *viewControllers = [NSArray arrayWithObject:currentViewController];
[self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
self.pageController.doubleSided = NO;
[self addChildViewController:self.pageController];
[[self view] addSubview:[self.pageController view]];
[self.pageController didMoveToParentViewController:self];
視圖控制器webViewDidFinishLoad:
CGSize contentSize = aWebView.scrollView.contentSize;
webView.frame = CGRectMake(0, 312, contentSize.width, contentSize.height);
scrollView.contentSize = CGSizeMake(320.f, contentSize.height+60);
編輯 下面是完整的代碼爲viewControllerBeforeViewController和viewControllerAfterViewController UIPageViewController
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
NSUInteger index = [(NewsDetailVC *)viewController index];
self.index = index;
NSLog(@"view before %i", index);
if (index <= 0) {
return nil;
}
index--;
currentViewController = [self viewControllerAtIndex:index];
return [self viewControllerAtIndex:index];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSUInteger index = [(NewsDetailVC *)viewController index];
NSLog(@"view after %i", index);
if (index >= self.newsList.count -1) {
return nil;
}
index++;
currentViewController =[self viewControllerAtIndex:index];
return [self viewControllerAtIndex:index];
}
的 EDIT2 前頁是一個的UIViewController包含的UITableView當點擊一個細胞將通過項目以UIPageViewController和所選擇的索引的數組。 currentViewController的用途,因爲我有字體大小和當前視圖背景的控件。 的UIPageViewController父的UIViewController 這裏是viewControllerAtIndex的代碼:
- (NewsDetailVC *)viewControllerAtIndex:(NSUInteger)index {
NewsDetailVC *childViewController = [[UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil] instantiateViewControllerWithIdentifier:@"NewsDetailVC"];
childViewController.index = index;
childViewController.selectedNews = [self.newsList objectAtIndex:index ];
childViewController.selectedCategory = self.selectedCategory;
return childViewController;
}
你應該添加你的'UIPageViewController'的實現(尤其是'viewControllerAfterViewController'和'viewControllerBeforeViewController') – longilong 2014-11-25 18:49:22
@longilong我編輯了這篇文章。 – Ammar 2014-11-25 20:33:42
你能否實現委託方法pageViewController:willTransitionToViewControllers:在調用時會說入日誌。然後嘗試與ScrollView進行交互,並查看該方法是否被調用。想知道手勢是否在視圖中造成混亂 – 2014-11-28 12:26:04