1

UISearchDisplayコントローラーで検索バーではなくテキストフィールドを使用するにはどうすればよいですか?

虫眼鏡アイコンを削除して背景をカスタマイズすることで、検索バーを完全にカスタマイズしたいと思います。また、サイズ変更を停止し、「キャンセル」ボタンを表示します。編集されるべきではない検索バーAPIの部分を編集することによって、これを行うためにハッキーな方法を使用している人がいます。したがって、このレベルでカスタマイズを行うためのより一般的な方法は、UISearchBarの代わりにUITextfieldを使用することであるように思われます。しかし、これを行うことについての情報はWeb上にないようです!

テキストフィールドを使用する場合、UISearchDisplayControllerを機能させるために、テキストが変更されたときにどのメソッドを呼び出す必要がありますか?

4

1 に答える 1

5

ここでのコツは、UISearchDisplayController を書き直すことです。それは本当に3つのことしかしません。

  1. 検索バーをビューの一番上に移動し、UINavigationBar を非表示にします。
  2. ビューの残りの上に透明なカバー ビューを配置します。
  3. 検索結果とともに UITableView を表示します。

UIViewController を UITextField のデリゲートとして登録することから始めます。

-(void)textFieldDidBeginEditing:(UITextField *)textField {
    //here is where you open the search.
    //animate your textfield to y = 0.
    //I usually make the search tableview and the cover a separate view, 
    //so I add them to my view here.

    [self.navigationController setNavigationBarHidden:YES animated:YES];
}

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString *searchText = [[NSString alloc] initWithString:[textField.text stringByReplacingCharactersInRange:range withString:string]];
    //display your search results in your table here.
}

-(void)textFieldDidEndEditing:(UITextField *)textField {
    //hide all of your search stuff
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}
于 2012-05-29T19:34:26.813 に答える