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];
    }
}

我究竟做错了什么?UIScrollViewDelegate 已在我的头文件中设置。

4

2 回答 2

4

你应该搬家

lastOffset = scrollView.contentOffset;

到方法结束,否则

scrollView.contentOffset.y < lastOffset.y

永远不会是真的。

于 2012-08-29T19:11:36.070 回答
1

它不是隐藏的,因为每次调用else部分中的代码。假设 contentOffset = (100, 100) 那么你将最后一个偏移量设置为等于 contentOffset 所以if (scrollView.contentOffset.y < lastOffset.y)它永远不会是真的。放在lastOffset = scrollView.contentOffset;scrollViewDidScroll方法的最后。

于 2012-08-29T19:14:02.623 回答