以编程方式选择 UIScrollView 中显示的当前按钮
Posted
技术标签:
【中文标题】以编程方式选择 UIScrollView 中显示的当前按钮【英文标题】:Select current button that is showing in UIScrollView programmatically 【发布时间】:2013-05-20 11:27:32 【问题描述】:我有一个启用分页的 UIScrollView。在每一页我都有一个按钮。我希望每次滑动都会选择UIScrollView
中显示的按钮。
我猜测解决方案将基于
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
但是如果没有太多范围和偏移量的计算,我怎么知道显示的是哪个按钮?
谢谢
【问题讨论】:
您可以使用UIPageControl
获取当前页面,并从View
获取所有SubViews
。 ?
您想在当前页面还是新页面中选择按钮?
我有 5 页。当我在滑动结束时从第 3 页滑动到第 4 页时,我希望选择第 4 页上的按钮 \ 按下。
【参考方案1】:
最简单的方法是为您的 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
循环。
【讨论】:
以上是关于以编程方式选择 UIScrollView 中显示的当前按钮的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式滚动时在 UIScrollView 上显示滚动指示器