23

Enterキーが押されたとき、またはユーザーが別のUISearchBar場所に触れたときに、はキーボードを閉じません。

キーボードを取り外して呼び出すには、iOSキーボードの右下にあるキーボードの取り外しボタンを使用する必要があります。

- (void)searchBarTextDidEndEditing:(UISearchBar *)aSearchBar

どうすれば修正できますか?

4

5 に答える 5

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

また、UISearchBarのデリゲートを設定する必要があります:UISearchBarDelegate

動作するはずです。

サンプルコードは次のとおりですhttp://developer.apple.com/library/ios/#samplecode/ToolbarSearch/Listings/ToolbarSearch_APLToolbarSearchViewController_m.html#//apple_ref/doc/uid/DTS40009461-ToolbarSearch_APLToolbarSearchViewController_m-DontLinkElementID_9

もう1つのオプションは、使用できるsearchBarSearchButtonClickedです。

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [searchBar resignFirstResponder];
    // You can write search code Here
}
于 2012-09-28T09:15:07.803 に答える
12

.hにUISearchBarDelegateを追加します

また、SearchBarのオブジェクトデリゲートをselfに設定します

UISearchBarDelegateのメソッドを追加する必要があります。

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [searchBar resignFirstResponder];
    // Do the search...
}

編集:上記は機能しないので、これを追加します:

[self.view endEditing:YES];
于 2012-09-28T08:56:36.933 に答える
3

次のコードスニペットを使用して、戻るボタンがクリックされたときにキーボードを閉じたり非表示にしたりします。

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

    if([text isEqualToString:@"\n"])
    {        
        [searchBar resignFirstResponder];
        return NO;
    }
        return YES;
}
于 2012-09-28T09:48:50.600 に答える
3

swift 1.2の場合、[完了]をクリックするとキーボードが非表示になり、キャンセルする別の機能がありますが、ユーザーが[キャンセル]をクリックすると別の単語を検索する可能性があるため、これを使用するのは適切ではありません...

func searchBarSearchButtonClicked(searchBar: UISearchBar) {
        searchBar.resignFirstResponder()
    }
于 2015-10-26T23:58:30.033 に答える
0

それが動作します -

Objectivec-

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

Swift-

func searchBarSearchButtonClicked(searchBar: UISearchBar) {
        searchBar.resignFirstResponder()
    }
于 2016-06-29T06:40:06.070 に答える