4
4

3 に答える 3

7

iOS 6以下で動作する解決策を見つけました

UITableView のサブクラスを作成し、layoutSubviewsメソッドをオーバーライドする

- (void)layoutSubviews
{
    [super layoutSubviews];
    CGRect rect = self.tableHeaderView.frame;
    rect.origin.y = MIN(0, self.contentOffset.y);
    self.tableHeaderView.frame = rect;
}
于 2012-11-01T11:24:15.570 に答える
1

スクロール時にiOS6 SDKが更新されないため、おそらく同じように最適化されます。そのため、スクロール時に tableview layoutSubviews を呼び出す必要があります。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{
    UISearchBar *searchBar = searchDisplayController.searchBar;
    CGRect rect = searchBar.frame;
    rect.origin.y = MIN(0, scrollView.contentOffset.y);
    [scrollView layoutSubviews];
    searchBar.frame = rect;
}
于 2012-11-06T14:12:13.703 に答える
1

以下を使用する場合:

[_tableView setTableHeaderView:_searchBar];

テーブル ビューを最初の行を超えてスクロールすると、検索バーもビューの上部にくっつくのではなく非表示になります。

あなたのコードを見なければUISearchBar、テーブル ヘッダーではなく、セクション ヘッダーとして を追加したのではないかと思いますか?

于 2012-11-01T11:16:02.110 に答える