选择以编程方式在UIScrollView中显示的当前按钮

时间:2013-05-20 11:27:32

标签: ios objective-c cocoa-touch uiscrollview

我有一个启用了分页的UIScrollView。在每个页面我都有一个按钮。我希望每次滑动都会选中UIScrollView中显示的按钮。

我猜这个解决方案将基于

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

但是如果没有太多的范围计算,我怎么知道哪个按钮显示?偏移θ

谢谢

1 个答案:

答案 0 :(得分: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循环。