コレクション ビューに検索バーを追加しようとしています。私が実装したいのは、- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
メソッドを使用してデータをフィルタリングすることです。
テーブルビューを使用すると、すべてうまくいきました。テーブルビューでUISearchBar
usingメソッドを追加するとほぼ同じ警告が出ましたが、 usingメソッドaddSubView
を追加すると消えました。UISearchBar
setTableHeaderView
ただし、コレクション ビューでは、テーブル ビューと同じように動作するメソッドは存在しません。そこでUISearchBar
、以下のように補足ヘッダー ビューに追加しました。
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
UICollectionReusableView *reusableView;
if (kind == UICollectionElementKindSectionHeader) {
reusableView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"HeaderView" forIndexPath:indexPath];
[reusableView addSubview:self.searchBar];
}
return reusableView;
}
この方法でオブジェクトを追加するとUISearchBar
、「コレクション ビューのファーストレスポンダー ビューを設定していますが、そのタイプ (セル/ヘッダー/フッター) がわかりませんか?」という警告が表示されます。検索バーをタップするたびに。
警告以外は問題なく動作しているように見えましたが、何かを入力すると問題が発生します。1 文字入力するとキーボード入力ビューがダウンするので、検索を続けるには検索バーをもう一度タップする必要があります。検索したい単語が 5 文字の単語の場合、検索バーを 4 回タップする必要があります。それはひどいです。
これは警告のために発生すると思います。警告コンテキストでグーグル検索したところ、これに関連するスタックオーバーフローに関する唯一の記事が見つかりました。(他にもTable View関連の記事がありました。いずれも を使えば直るようsetTableHeaderView
です。)
記事はこちらです。
しかし、私は iOS 開発者プログラムに登録していないので、その記事を読むことができません。これで私を助けてくれる人はいますか?,