Cocoa touch scrollViewDidScroll未调用--调用ScrollViewDidEndDecelling
我有一个替换键盘的自定义视图,我试图让它在用户向下滚动时滚动到屏幕外 我最初的scrollViewDelegate方法工作正常,只是在用户滚动和查看动画之间有一个延迟,因为我使用的是Cocoa touch scrollViewDidScroll未调用--调用ScrollViewDidEndDecelling,cocoa-touch,uiscrollview,uiscrollviewdelegate,Cocoa Touch,Uiscrollview,Uiscrollviewdelegate,我有一个替换键盘的自定义视图,我试图让它在用户向下滚动时滚动到屏幕外 我最初的scrollViewDelegate方法工作正常,只是在用户滚动和查看动画之间有一个延迟,因为我使用的是ScrollViewDiEndDecelling,在用户开始滚动后,调用它大约需要1秒 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { self.isUserScrolling = YES; // Save to
ScrollViewDiEndDecelling
,在用户开始滚动后,调用它大约需要1秒
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
self.isUserScrolling = YES;
// Save to tell if scrolling up or down
initialContentOffset = scrollView.contentOffset.y;
previousContentDelta = 0.f;
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
self.isUserScrolling = NO;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
self.isUserScrolling = NO;
// If scrolled down
CGFloat prevDelta = previousContentDelta;
CGFloat delta = scrollView.contentOffset.y - initialContentOffset;
if (delta > 0.f && prevDelta <= 0.f) {
} else if (delta < 0.f && prevDelta >= 0.f) {
[self animateKeyBoardSpace:[self rectForKeyboardSpace:NO] curve:UIViewAnimationCurveEaseInOut duration:0.25];
}
previousContentDelta = delta;
}
但是,
scrollViewDidScroll
甚至没有被调用。它在同一个tableViewController中,委托被设置,其他委托方法被调用。我在超类中工作,我在子类中有一个scrollViewDidScroll
的存根。这是捕获代理调用
我只需要删除子类存根
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
// ScrollDirection scrollDirection;
if (lastContentOffset > scrollView.contentOffset.y) {
[self animateKeyBoardSpace:[self rectForKeyboardSpace:NO] curve:UIViewAnimationCurveEaseInOut duration:0.25];
}
else if (lastContentOffset < scrollView.contentOffset.y) {
}
lastContentOffset = scrollView.contentOffset.x;
}