在重写的layoutSubviews调用期间,self.decelerating和self.dragging似乎不可靠。例如,它们偶尔都是正确的,这显然是不可能的。
是否有可靠的方法来判断UIScrollView是否在layoutSubviews中减速?
答案 0 :(得分: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;
}
答案 1 :(得分:0)
设置实例变量就像修复它一样:
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
_decelerating = YES;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
_decelerating = NO;
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
_decelerating = NO;
}
问题是如果你在减速时开始拖动,则自动减速不会被取消。以上修正了考虑scrollViewWillBeginDragging
的问题。