60

検索バーを迅速に作成しようとしましたが、検索バーを押したときに画面上のキーボードを閉じるのに問題があります。テキストフィールドを試してみると、このコードで問題なく動作します。

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        self.view.endEditing(true)
    }   

テキストフィールドを押すと機能し、キーボードが消えます。検索バーを使用してテキストフィールドと同じ方法を使用すると、まったく機能しないため、検索バーでそのようにしたいのです。リファレンスやコードは私にとって非常に役に立ちます。

4

10 に答える 10

30

テスト済みで動作しています!

func searchBarSearchButtonClicked(searchBar: UISearchBar) 
{
    searchActive = false;
    self.mySearchBar.endEditing(true)
}

Swift 4.2用に編集

func searchBarSearchButtonClicked(_ searchBar: UISearchBar)
    {
        searchActive = false
        self.searchBar.endEditing(true)
    }
于 2015-09-21T18:38:08.913 に答える
10
 func searchBarSearchButtonClicked(searchBar: UISearchBar) {

        searchActive = false;
        searchProject.resignFirstResponder()
    }

このメソッドは、ユーザーがキーボードの検索ボタンをクリックしたときに呼び出されます。したがって、ここでキーボードを閉じることができます。これは正しい方法だと思います。

于 2015-07-30T09:51:39.387 に答える
3
class MaCaveViewController: UIViewController, UISearchBarDelegate {
    
    @IBOutlet weak var searchBar: UISearchBar!

    override func viewDidLoad() {
        super.viewDidLoad()
        searchBar.delegate = self
    }

    // When button "Search" pressed
    func searchBarSearchButtonClicked(_ searchBar: UISearchBar){
        print("end searching --> Close Keyboard")
        self.searchBar.endEditing(true)
    }
}

これは私にとって非常にうまく機能します。

于 2018-02-12T10:59:44.147 に答える
1

次の方法でこれを行うことができます

    func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
        searchBar.showsCancelButton = true;
    }

    func searchBarTextDidEndEditing(searchBar: UISearchBar) {
        searchBar.showsCancelButton = false;
    }
于 2016-11-22T14:27:29.573 に答える