7

「検索バーと検索表示コントローラー」を備えたテーブルビューを含む xCode プロジェクトを使用して、ユーザーが表示項目のリストを絞り込むことができるようにしています。一般に、 http://www.raywenderlich.com/16873/how-to-add-search-into-a-table-viewで提供されているガイダンスに従いました。最近、iOS 7 をサポートする最新の xCode (バージョン 5.0 (5A1413)) をダウンロードし、問題のアプリをさまざまなターゲットでテストしています。

このアプリを iOS 6 ターゲット (エミュレーターまたは実際のデバイス) で実行すると、期待どおりに動作します。つまり、キャンセル ボタンを押すと検索バーが削除され、クリア ボタン (小さな灰色の x) を押すと、既に入力されているすべての検索条件がクリアされます。ユーザー。しかし、プロジェクトを iOS 7 ターゲットで実行すると、クリア ボタンとキャンセル ボタンの両方が機能しません。

このプロジェクトには searchBarCancelButtonClicked メソッドが実装されており、ターゲットが iOS 7 を実行しているときに呼び出されないことを確認しました。

- (void)searchBarCancelButtonClicked:(UISearchBar *)SearchBar
{
    NSLog(@"searchBarCancelButtonClicked called");

    self.searchBar.text = nil;

    …

    // Hide Search bar when cancelled
    [self hideSeachBar];

    [self.searchBar resignFirstResponder];

    …
    }

私のテーブル ビュー コントローラーは、UISearchDisplayDelegate と UISearchBarDelegate になるように設定されています。また、iOS 6 または 7 ターゲットで searchBar:textDidChange: が呼び出されるため、これはまだ機能しているようです。

@interface ItemViewController () <UISearchDisplayDelegate, UISearchBarDelegate>
…
@end

これに関連する他の投稿や iOS 7 の変更資料 ( https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/Bars.html#//apple_ref/doc/uidなど) が表示されません/TP40013174-CH8-SW1 ) には、iOS7 をサポートするために必要な再コーディングが記載されています。

これについて何か考えはありますか?ありがとう

4

6 に答える 6

1

私もこの問題を抱えていました。奇妙なことに、他のデリゲート メソッドUISearchBarDelegateが呼び出されています。回避策は次のとおりです。

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
    if ([searchText length] == 0) {
        NSLog("No Text");
    }
}

それは私のために働いた

于 2014-06-06T23:57:26.030 に答える