1.在WMMagicScrollView的KVO回调有scrollView导致的Bug
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if (object == self) {
//Adjust self scroll offset when scroll down
if (diff > 0 && _lock) {
......
} else {
//Adjust the observed scrollview's content offset
UIScrollView *scrollView = object;
_lock = (scrollView.contentOffset.y > -scrollView.contentInset.top);
//Manage scroll up
if (self.contentOffset.y < maximumContentOffsetY && _lock && diff < 0) { //<-这一行
[self scrollView:scrollView setContentOffset:old];
}
//Disable bouncing when scroll down
if (!_lock && ((self.contentOffset.y > -self.contentInset.top) || self.bounces)) {
[self scrollView:scrollView setContentOffset:CGPointMake(scrollView.contentOffset.x, -scrollView.contentInset.top)];
}
}
}
在某些情况下,maximumContentOffsetY的值可能由于scrollView的contentOffset精度问题,实际上并不会触发if (self.contentOffset.y < maximumContentOffsetY && _lock && diff < 0),导致底部没办法联动。
临时的解决办法是改成这样if (self.contentOffset.y < maximumContentOffsetY - 1 && _lock && diff < 0)
网友评论