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]; 

如何在每个页面上启用上下滚动。

感谢帮助。

4

1 回答 1

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];

代码尚未经过测试,但希望这足以让您入门。

如果您不想以编程方式执行此操作,您还可以positionChanged使用 Xcode Interface Builder 将页面控件连接到方法。Xcode 用户指南中解释了详细信息。

于 2013-06-01T19:58:27.413 回答