14

こんにちは、アプリで UIsearchBar を使用しています。UISearchBar Delegate のすべてのメソッドを試してキーボードを閉じましたが、使用できませんでした。誰でも私を助けることができます。

私が試したいくつかのコード

1.

-(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
    [searchBar resignFirstResponder];
}

2.

-(BOOL) searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {

    if([text isEqualToString:@"\n"])
    {
        [searchBar resignFirstResponder];
        return NO;
    }
    return YES;

}

3.

- (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar
{
     [searchBar resignFirstResponder];
}
4

2 に答える 2

30

まずUISearchBarDelegate 、クラスに実装して、接続しているかどうかを確認する必要がありますUISearchBarか?

IB を使用して追加する場合UISearchBarは、UISearchBar のデリゲート プロパティをファイルの所有者に選択する必要があります。コード内の に正しく接続IBOutletしていることを確認する必要があり ます。UISearchBar

UISearchBarコードを介して追加する場合は、次のようなコードでデリゲートを自分で設定する必要がありますsearchBar.delegate=self;

次のステップは、デリゲート メソッドが呼び出されていることを確認することです。これは、デリゲートを適切に接続していれば明らかです。確認する最善の方法は、コードにブレーク ポインターを配置するか、NSLog.

最後に、ユーザーがクリックして検索したときにキーボードを非表示にする場合は、このメソッドを使用してキーボードを非表示にします

- (void) searchBarSearchButtonClicked:(UISearchBar *)searchBar {
    [searchBar resignFirstResponder];
}

または、編集が終了したときに試すことができます

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
    [searchBar resignFirstResponder];
}
于 2013-03-13T13:41:04.853 に答える
10

これを試して:

検索バーにデリゲートを設定し、IBOutlet が接続されているかどうかを確認します

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
    [searchBar resignFirstResponder];
}           
于 2013-03-13T13:38:55.337 に答える