【问题标题】:Get value of label when UIScrollview did stop scrolling animation当 UIScrollview 停止滚动动画时获取标签的值
【发布时间】:2012-11-05 04:52:01
【问题描述】:

我正在开发一个无限水平滚动视图来获取我的应用程序的月份和年份值。我找到了一种无限滚动的方法,但我不知道在滚动停止动画或拖动时如何获取标签的值。

  1. 当滚动结束动画/拖动或我需要更改我的组件时,有什么方法可以使用我上面的组件获取月份值?

提前致谢。

【问题讨论】:

    标签: iphone objective-c ios ipad ios5


    【解决方案1】:

    找到解决办法

    - (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);
                      }
                }
            }
    }
    

    上面的代码将返回滚动视图中心的标签。

    【讨论】:

    • 如果有另一个子视图具有相同的中心点,此代码将不起作用,并且还可能在 NSLog 语句处崩溃。
    【解决方案2】:

    这取决于你的scrollView实现,通常你可以在中心点获得子视图

    - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
    

    查看documentation 了解详情。理想情况下,您的 scrollView 知道哪个视图被移动到中心,并且能够通过您的一些自定义方法返回它。

    【讨论】:

      【解决方案3】:

      这是一些从主视图中检索子视图的代码。

      -在您的滚动委托 scrolldidEnd 方法中:

      UIView v = nil;
      for(v in yourscroll.subviews){
       if ([v isKindOfClass:UILabel]){
            UILabel * lbl = v(UILabel *);
           if (lbl.tag == yourSelectedLabelTag){
             NSLog(lbl.text);
                   }
            }
      }
      

      注意:您必须在滚动视图中创建带有标签视图的标签

      【讨论】:

      • 嘿,我的问题是如何在滚动结束时获得“yourSelectedLabelTag”......
      猜你喜欢
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 2021-12-30
      相关资源
      最近更新 更多