키보드를 대체하는 사용자 정의보기가 있는데 사용자가 아래로 스크롤 할 때 화면을 벗어난 상태로 스크롤하려고합니다.scrollViewDidScroll이 호출되지 않았습니다. scrollViewDidEndDecelerating이 호출되었습니다.
원래의 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에 있고, 델리게이트가 설정되어 있고, 다른 델리게이트 메소드가 호출되고 있습니다.