1

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

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

4

2 回答 2

0

我从来没有遇到过 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;
}
于 2013-06-28T15:07:13.570 回答
0

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

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

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

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

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

于 2013-06-28T16:21:26.773 回答