私はテーブルのヘッダービューにUISearchBarを持っています。アニメーションが発生すると、いつでも。行を削除または挿入すると、ヘッダービューがスクロールダウンします。テーブルビューに、ヘッダービューを(自動的に)スクロールしてはならないことを伝える方法はありますか? (ユーザーだけがそれをスライドさせることができるはずです)行アニメーションがTableHeaderViewをスクロールしないようにするにはどうすればよいですか?
0
A
答えて
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
、内部に実装されています。反対側のUITableView
はUIScrollView
から継承されています。これにより、これらのメソッドが利用可能になり、すべての魔法が実行されます。
説明する文は、contentOffset
とcontentInset
で、その意味を理解するのに少し時間がかかりました。
- オフセットは、単にどれだけ目に見えるコンテンツを伝える
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)のオフセットにスライドさせます。
私は役立つことを願っています。 :)
関連する問題
- 1. ハッシュタグリンクがページをスクロールしないようにするにはどうすればよいですか?
- 2. スクロールビューで画像がスクロールしないようにするにはどうすればよいですか?
- 3. ProgressBarがツールバーと共にスクロールされないようにするにはどうすればよいですか?
- 4. スクロール中にカレンダーウィジェットがフローティングされないようにするにはどうすればよいですか?
- 5. iOS Music AppでスクロールしながらUINavigationBarアニメーションを実現するにはどうすればよいですか?
- 6. カスタムフルスクリーンでスクロール位置がリセットされないようにするにはどうすればよいですか?
- 7. リンクをクリックしてトップページにスクロールしないようにするにはどうすればよいですか?
- 8. .row divがスクロールしないようにするにはどうすればよいですか?
- 9. JScrollPaneが自動的にスクロールしないようにするにはどうすればいいですか?
- 10. Firefox Developer Toolsがページをスクロールしないようにするにはどうすればいいですか?
- 11. Android WebView requestFocus:スクロールしないようにするにはどうすればよいですか?
- 12. PSQLが行数を出力しないようにするにはどうすればよいですか?
- 13. this.form.reset()がフォームアクションを実行しないようにするにはどうすればよいですか?
- 14. シナリオSQL Serverで行が重複しないようにするにはどうすればよいですか?
- 15. デプロイ中にテストが実行されないようにするにはどうすればよいですか?
- 16. iframeでfocus()が実行されないようにするにはどうすればよいですか?
- 17. GrailsがIntellijで実行されないようにするにはどうすればよいですか?
- 18. 実行タイムアウトエラーメッセージが表示されないようにするにはどうすればよいですか?
- 19. ページをスクロールできないようにするにはどうすればいいですか?
- 20. TextBoxに行を追加/削除しないようにするにはどうすればよいですか?
- 21. WPFで羊皮紙スクロールのようにロールアウトするようにコントロールをアニメーション化するにはどうすればよいですか?
- 22. MySQLで重複行を挿入しないようにするにはどうすればよいですか?
- 23. CSSアニメーション中にスクロールをオフにするにはどうすればよいですか?
- 24. 行の長さが10を超えないようにするにはどうすればよいですか?
- 25. rootがgit pullを実行しないようにするにはどうすればいいですか?
- 26. スクロール可能なフローティングCardviewをこのようにするにはどうすればよいですか?
- 27. これらのアニメーションを異なる時間にアニメーション化するにはどうすればよいですか?
- 28. HTMLコードを実行しないようにするにはどうすればよいですか?
- 29. スクロール可能なdivが一時的にスクロールしないようにするにはどうすればよいですか?
- 30. アンドロイドスタジオのテキストをアニメーションにするにはどうすればよいですか?