как скрыть клавиатуру после ввода в EditText в Android?

Я использовал это решение, чтобы я мог поддерживать вызов segue и обмена данными в рамках одной и той же функции:

private var segueCompletion : ((UIStoryboardSegue, Any?) -> Void)?

func performSegue(withIdentifier identifier: String, sender: Any?, completion: @escaping (UIStoryboardSegue, Any?) -> Void) {
    self.segueCompletion = completion;
    self.performSegue(withIdentifier: identifier, sender: sender);
    self.segueCompletion = nil
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    self.segueCompletion?(segue, sender)
}

Пример использования:

func showData(id : Int){
    someService.loadSomeData(id: id) {
        data in
        self.performSegue(withIdentifier: "showData", sender: self) {
            storyboard, sender in
            let dataView = storyboard.destination as! DataView
            dataView.data = data
        }
    }
}

Это, похоже, работает для меня, однако я не уверен на 100%, что функции выполнения и подготовки всегда выполняются в одном и том же потоке.

68
задан Ruchir Baronia 15 October 2016 в 20:15
поделиться

1 ответ

Это должно сработать.

InputMethodManager inputManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); 
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); 

Просто убедитесь, что this.getCurrentFocus () не возвращает null, что было бы, если бы ничто не было в фокусе.

119
ответ дан 24 November 2019 в 13:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: