2015-04-23 92 views
0

我已經實現了一個UIPageViewController,我希望能夠無限滾動到右側(如用戶向左滑動),並且能夠向另一個方向向後滾動一路開始。不過,我不希望用戶能夠在第一頁上向左滾動(如用戶向右滑動),即使我只有三頁循環,我該怎麼做?UI頁面視圖控制器滾動不會向後滾動

我已經想出瞭如何使右側有三個視圖控制器的無限滾動(如用戶向左滾動),但是當用戶嘗試向左滾動時(如用戶向右滑動)它錯了,屏幕變白了?

任何人都可以改進這個代碼,這樣用戶可以無限滾動雙向,而不僅僅是一個?並且如果可能的話,防止用戶在第一個面板上向後滾動?謝謝。

PageViewController.h

#import <UIKit/UIKit.h> 

@interface PageViewController : UIPageViewController 
<UIPageViewControllerDelegate, UIPageViewControllerDataSource> 
@end 

PageViewController.m

#import "PageViewController.h" 

@interface PageViewController() 

@end 

@implementation PageViewController 
{ 
    NSArray *myViewControllers; 


} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.delegate = self; 
    self.dataSource = self; 

    UIViewController *p1 = [self.storyboard 
          instantiateViewControllerWithIdentifier:@"ContentViewController1"]; 
    UIViewController *p2 = [self.storyboard 
          instantiateViewControllerWithIdentifier:@"ContentViewController2"]; 
    UIViewController *p3 = [self.storyboard 
          instantiateViewControllerWithIdentifier:@"ContentViewController3"]; 

    myViewControllers = @[p1,p2,p3]; 

    [self setViewControllers:@[p1] 
        direction:UIPageViewControllerNavigationDirectionForward 
        animated:NO completion:nil]; 


    NSLog(@"loaded!"); 

} 

-(UIViewController *)viewControllerAtIndex:(NSUInteger)index 
{ 
    return myViewControllers[index]; 
} 

-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController 
    viewControllerBeforeViewController:(UIViewController *)viewController 
{ 
    NSUInteger currentIndex = [myViewControllers indexOfObject:viewController]; 

    --currentIndex; 
    currentIndex = currentIndex % (myViewControllers.count); 
    return [myViewControllers objectAtIndex:currentIndex]; 
} 

-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController 
     viewControllerAfterViewController:(UIViewController *)viewController 
{ 
    NSUInteger currentIndex = [myViewControllers indexOfObject:viewController]; 

    ++currentIndex; 
    currentIndex = currentIndex % (myViewControllers.count); 
    return [myViewControllers objectAtIndex:currentIndex]; 
} 


-(NSInteger)presentationCountForPageViewController: 
(UIPageViewController *)pageViewController 
{ 
    return myViewControllers.count; 
} 

-(NSInteger)presentationIndexForPageViewController: 
(UIPageViewController *)pageViewController 
{ 
    return 0; 
} 

@end 

回答

0

您可以使用標誌來知道初始視圖(第一種觀點)。然後用這個卷軸啓用和禁用方法,以防止刷卡。

-(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; 
    } 
} 

希望這會起作用。

相關問題