使用带有页面控制的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];
如何在每个页面上启用向上和向下滚动。
感谢您的帮助。
答案 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。