【发布时间】:2012-11-05 04:52:01
【问题描述】:
我正在开发一个无限水平滚动视图来获取我的应用程序的月份和年份值。我找到了一种无限滚动的方法,但我不知道在滚动停止动画或拖动时如何获取标签的值。
- 当滚动结束动画/拖动或我需要更改我的组件时,有什么方法可以使用我上面的组件获取月份值?
提前致谢。
【问题讨论】:
标签: iphone objective-c ios ipad ios5
我正在开发一个无限水平滚动视图来获取我的应用程序的月份和年份值。我找到了一种无限滚动的方法,但我不知道在滚动停止动画或拖动时如何获取标签的值。
提前致谢。
【问题讨论】:
标签: iphone objective-c ios ipad ios5
找到解决办法
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//some logics go here..........
CGPoint point = scrollView.center;
for (UIView *myView in scrollView.subviews)
{
if(CGPointEqualToPoint(myView.center, point) == YES )
{
if([myView isKindOfClass:[UILabel class]])
{
UILabel *label = (UILabel *)myView;
NSLog(@"Month is %@", label.text);
}
}
}
}
上面的代码将返回滚动视图中心的标签。
【讨论】:
这取决于你的scrollView实现,通常你可以在中心点获得子视图
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
查看documentation 了解详情。理想情况下,您的 scrollView 知道哪个视图被移动到中心,并且能够通过您的一些自定义方法返回它。
【讨论】:
这是一些从主视图中检索子视图的代码。
-在您的滚动委托 scrolldidEnd 方法中:
UIView v = nil;
for(v in yourscroll.subviews){
if ([v isKindOfClass:UILabel]){
UILabel * lbl = v(UILabel *);
if (lbl.tag == yourSelectedLabelTag){
NSLog(lbl.text);
}
}
}
注意:您必须在滚动视图中创建带有标签视图的标签。
【讨论】: