使用页面控件滚动顶部和底部

时间:2013-06-01 18:14:32

标签: ios6 uiscrollview uipagecontrol

使用带有页面控制的scrollview显示不同的页面。想要在每个页面上下滚动。我怎么能这样做。

[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 个答案:

答案 0 :(得分:1)

您需要监控UIControlEventValueChanged事件以确定页面控件何时更改了页面。您可以通过编程方式查看addTarget方法。

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

这告诉页面控件在页面更改时调用当前对象中的positionChanged方法。然后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