0
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    lastOffset = scrollView.contentOffset;

    if (scrollView.contentOffset.y < lastOffset.y) {
        [self.navigationController setNavigationBarHidden:YES animated:YES];
        [self.navigationController setToolbarHidden:YES animated:YES];
    }
    else {
        [self.navigationController setNavigationBarHidden:NO animated:YES];
        [self.navigationController setToolbarHidden:NO animated:YES];
    }
}

What am I doing wrong? The UIScrollViewDelegate is already set in my header file.

filou
  • 1,609
  • 5
  • 26
  • 53

2 Answers2

4

You should move

lastOffset = scrollView.contentOffset;

to the end of the method, otherwise

scrollView.contentOffset.y < lastOffset.y

will never be true.

Martin R
  • 529,903
  • 94
  • 1,240
  • 1,382
1

It's not hidden because every time code in else part is invoked. Suppose contentOffset = (100, 100) then you set last offset to equal contentOffset so if (scrollView.contentOffset.y < lastOffset.y) it will never be true. Put lastOffset = scrollView.contentOffset; on the end of scrollViewDidScroll method.

pawelropa
  • 1,409
  • 1
  • 14
  • 20