4

ヘッダーに検索バーがある UITableview Controller があります。テーブルビューを上にスクロールすると、バウンスします。しかし、検索バーは非表示になります。下にスクロールすると、検索バーが表示されます。検索バーを再度表示する方法を教えてください。

次のコードを試しましたが、スムーズに動作しません。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat sectionHeaderHeight = 40;//Change as per your table header hight
    if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {
        //scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
    } else if (scrollView.contentOffset.y>=sectionHeaderHeight) {
        CGPoint newOffset = CGPointMake(0, -[self.tableView  contentInset].top);
        [self.tableView setContentOffset:newOffset animated:YES];
    }
}

スクロールする前に表示するためのスクリーン ショットを次に示します。 ここに画像の説明を入力

そして、これは間違ったビューです。スクロールした後:

ここに画像の説明を入力

4

2 に答える 2

0

このコードを試してください

- (void)scrollViewDidScroll:(UIScrollView *)scrollView  
{  
    CGFloat sectionHeaderHeight = 40;  
    if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {  
        scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);  
    }  
    else if (scrollView.contentOffset.y>=sectionHeaderHeight) {  
        scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);  
    }  
} 

しかし、あなたの問題は、テーブルビューヘッダーが40ではなく、35または25であることです。つまり、テーブルビューがインセットに正しい数値を設定できないことを意味します。ヘッダーの高さを修正するために40を変更してみてください。

于 2016-05-19T10:42:54.953 に答える