【问题标题】:self.decelerating and self.dragging in UIScrollView's layoutSubviewsUIScrollView 的 layoutSubviews 中的 self.decelerating 和 self.dragging
【发布时间】:2013-06-28 11:47:41
【问题描述】:

似乎 self.decelerating 和 self.dragging 在覆盖 layoutSubviews 调用期间不可靠。例如,它们偶尔都为真,这显然是不可能的。

有没有可靠的方法来获取 UIScrollView 是否在 layoutSubviews 中减速?

【问题讨论】:

    标签: ios uiscrollview layoutsubviews


    【解决方案1】:

    我从来没有遇到过 UIScrollView 协议方法不可靠的问题。您是否可以从另一个委托类管理您当前在 layoutSubviews 中所做的任何事情?像父视图,还是什么?

    然后您可以(可能)更可靠地侦听委托方法。

    #pragma mark UIScrollViewDelegate
    
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
      if (self.scrollViewDecelerating)
      {
        // stuff...
      }
    }
    
    - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
    {
      self.scrollViewDecelerating = YES;
    }
    
    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
    {
      self.scrollViewDecelerating = NO;
    }
    

    【讨论】:

      【解决方案2】:

      像这样固定一个实例变量:

      - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
          _decelerating = YES;
      }
      
      - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
          _decelerating = NO;
      }
      
      - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
          _decelerating = NO;
      }
      

      问题是如果您在减速时开始拖动,self.decelerating 不会取消设置。以上通过考虑scrollViewWillBeginDragging 解决了这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-18
        • 2012-04-04
        • 1970-01-01
        • 2011-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多