我有一个自定义视图替换键盘,我试图让它在用户向下滚动时滚动屏幕。
我原来的scrollViewDelegate方法工作除了用户滚动和视图动画之间存在延迟,因为我使用scrollViewDidEndDecelerating
并且在用户开始滚动后调用它需要大约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
中的向下滚动并在那里调用animateKeyBoardSpace
:
- (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;
}
然而,scrollViewDidScroll
甚至没有被召唤。它在同一个tableViewController中,设置了委托,并且调用了其他委托方法。
答案 0 :(得分:1)
我在超类中工作,从前一段时间我在子类中有scrollViewDidScroll
的存根。这是捕获委托电话。
我只需要删除子类存根。