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 回答