在覆盖的 layoutSubviews 调用期间,似乎 self.decelerating 和 self.dragging 不可靠。例如,它们偶尔都为真,这显然是不可能的。
是否有可靠的方法来获取 UIScrollView 是否在 layoutSubviews 中减速?
在覆盖的 layoutSubviews 调用期间,似乎 self.decelerating 和 self.dragging 不可靠。例如,它们偶尔都为真,这显然是不可能的。
是否有可靠的方法来获取 UIScrollView 是否在 layoutSubviews 中减速?
我从来没有遇到过 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;
}
像这样固定了一个实例变量:
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
_decelerating = YES;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
_decelerating = NO;
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
_decelerating = NO;
}
问题是如果您在减速时开始拖动,self.decelerating 不会取消设置。以上通过考虑scrollViewWillBeginDragging
.