2013-06-01 61 views
0

使用帶頁面控件的滾動視圖來顯示不同的頁面。想要在每個頁面上上下滾動。我怎樣才能做到這一點。帶頁面控件的滾動頂部和底部

[scrollView setContentSize:CGSizeMake(self.view.frame.size.width * 3, self.view.frame.size.height)]; 

[scrollView setDelegate:self]; 

[scrollView setPagingEnabled:YES]; 

scrollView.showsVerticalScrollIndicator = NO; 
scrollView.showsHorizontalScrollIndicator = NO; 

// Add our views to the scroll view 
[scrollView addSubview:pageOne.view]; 

[scrollView addSubview:pageTwo.view]; 

[scrollView addSubview:pageThree.view]; 

[self.view addSubview:self.scrollView]; 

_pageControl = [[UIPageControl alloc] init]; 

[_pageControl setCurrentPage:0]; 

[_pageControl setNumberOfPages:3]; 

[_pageControl sizeToFit]; 

[_pageControl setFrame:CGRectMake((scrollView.frame.size.width/2) - (_pageControl.frame.size.width/2), scrollView.frame.size.height - _pageControl.frame.size.height, _pageControl.frame.size.width, _pageControl.frame.size.height)]; 

[self.view addSubview:self.pageControl]; 

如何在每個頁面上啓用滾動上下滾動。

感謝您的幫助。

回答

1

您需要監視UIControlEventValueChanged事件以確定頁面控件何時更改頁面。您可以通過編程方式查看addTarget方法。

[_pageControl addTarget:self action:@selector(positionChanged) 
    forControlEvents:UIControlEventValueChanged]; 

這告訴頁面控件調用當前對象的positionChanged方法,每當頁面被改變。然後,方法可以查看頁面控件的currentPage以確定移動到哪裏。

所以positionChanged方法可能是這個樣子:

- (void)positionChanged { 
    NSUInteger page = [_pageControl currentPage]; 
    CGFloat yoffset = self.view.frame.size.height * page; 
    [scrollView setContentOffset:CGPointMake(0,y)]; 
} 

不要忘了,你就需要調用removeTarget你的對象被破壞之前的某個時候,可能就在您dealloc方法。

[_pageControl removeTarget:self action:@selector(positionChanged) 
    forControlEvents:UIControlEventValueChanged]; 

代碼尚未經過測試,但希望這足以讓您開始。

如果您不想以編程方式執行此操作,也可以使用Xcode Interface Builder將您的頁面控件連接到positionChanged方法。細節在Xcode User Guide中解釋。