2012-04-18 16 views
0

私はテーブルのヘッダービューにUISearchBarを持っています。アニメーションが発生すると、いつでも。行を削除または挿入すると、ヘッダービューがスクロールダウンします。テーブルビューに、ヘッダービューを(自動的に)スクロールしてはならないことを伝える方法はありますか? (ユーザーだけがそれをスライドさせることができるはずです)行アニメーションがTableHeaderViewをスクロールしないようにするにはどうすればよいですか?

答えて

0

Google & StackOverFlowでの広範な検索の後、私は正しい手がかりを見つけました:UIScrollView。私が探して、最終的に実装された実際のソリューションは、別の質問で見つけることができます:Change Default Scrolling Behavior of UITableView Section Header

私は、次の特性を有することが、解決策を少しカスタマイズした:

  • 行のアニメーションは、テーブルビューを下にスクロールすることができますヘッダービューが表示されない場合
  • ヘッダービューを除き、上部(「スクロールトップ」)をクリックすると、ヘッダービューを除外して上部にスクロールする
  • ヘッダービューが部分的に表示される場合は、完全に見えるので、完全に表示されます
  • このソリューションの

コード:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGFloat searchBarHeight = self.searchBar.frame.size.height; 
    if (scrollView.contentOffset.y >= searchBarHeight) { 
     scrollView.contentInset = UIEdgeInsetsMake(-searchBarHeight, 0, 0, 0); 
    } else { 
     scrollView.contentInset = UIEdgeInsetsZero; 
    } 
} 

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{ 
    if (scrollView.contentOffset.y < self.searchBar.frame.size.height && scrollView.contentOffset.y > 0) { 
     [scrollView setContentOffset:CGPointZero animated:YES]; 
    } 
} 

このコードはUITableViewのデリゲートとして機能UITableViewController、内部に実装されています。反対側のUITableViewUIScrollViewから継承されています。これにより、これらのメソッドが利用可能になり、すべての魔法が実行されます。

説明する文は、contentOffsetcontentInsetで、その意味を理解するのに少し時間がかかりました。

  • オフセットは、単にどれだけ目に見えるコンテンツを伝えるCGPoint、である、すなわち、セクションテーブルビューの&セルは、左上から下にスクロールされます。ヘッダービューとフッタービューが含まれているため、(0、0)のオフセットは、テーブルビューが上にスクロールされることを示します。 (0、100)のオフセットは、テーブルビューが100ピクセル下にスクロールされることを意味します(ポイントのx値は通常使用されません)。
  • インセットは非常に興味深いプロパティで、UIScrollViewの境界を四重極(top, left, bottom, right)として定義します。したがって、これらの境界を越えるとテーブルビューがバウンスします。デフォルト値は(0、0、0、0)です。つまり、最初または最後のセルの上または下にスクロールすると、テーブルビューがバウンスします。したがって、(-44,0,0,0)の値は、バウンス境界をテーブルビューの原点の44ピクセル下に下げます。ヘッダービューは44ピクセル高いので、ヘッダービューを画面の表示部分にスクロールするたびにバウンスされます。これにより、行アニメーションが(44,0)のオフセットの下にテーブルをスライドさせないようにし、「slide to top」コマンドはテーブルビューを(44,0)のオフセットにスライドさせます。

私は役立つことを願っています。 :)

関連する問題