0

さまざまなページを表示するためのページ コントロールで 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]; 

各ページで上下にスクロールできるようにするにはどうすればよいですか。

手伝ってくれてありがとう。

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 に答える