0

ページングが有効になっている UIScrollView があります。すべてのページにボタンがあります。スワイプするたびに、に表示されているボタンUIScrollViewが選択されるようにします。

解決策はに基づいていると思います

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

しかし、範囲とオフセットの計算をあまり行わずに、どのボタンが表示されているかを知るにはどうすればよいですか?

ありがとう

4

1 に答える 1

2

最も簡単な方法は、UIScrollView の各 UIButton に pageNumber+1 と等しいタグを設定することです (+1 は、ページ 0 のタグが 1 になり、すべてのデフォルト タグが 0 であるため、ボタンを見つけることができるためです)。viewDidEndDecelerating/viewDidScroll次に、必要に応じて、タグまたはその他のスクロール ビュー デリゲート メソッドを計算できます。私はviewDidEndDeceleratingこのようなものですべての計算を行っています:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    int page = scrollView.contentOffset.x / scrollView.frame.size.width;
    //now you have the current page so you can get the button 
    UIButton *button =(UIButton *) [scrollView viewWithTag:page+1]; //the +1 that I was talking about above
   button.selected = YES;
}

また、他のボタンの選択を解除したい場合は、次のようなタグでも見つけることができます。

for(int i = 1; i<=numberOfPages; i++) { 
     UIButton *button =(UIButton *) [scrollView viewWithTag:i];
     button.selected = NO;
  }

forただし、ボタンを有効にする部分の前に必ずループを呼び出してください。

于 2013-05-20T11:37:26.757 に答える