Скрыть клавиатуру IOS Swift

У меня возникла следующая проблема:

У меня есть два TextField, одно имеет поведение по умолчанию, а другое захватывает делегат метода textFieldDidBeginEditing, чтобы представить UIViewController с PresentationStyle (Custom) и TransitionStyle (CrossDissolve). Пока все работает нормально. Но если я отредактирую первое текстовое поле (и оставлю клавиатуру открытой), а затем перейду ко второму, клавиатура будет открыта, и у меня нет возможности закрыть ее (как если бы первое текстовое поле потеряло фокус, даже не вызывается textFieldShouldReturn, когда Нажимаю кнопку интро).

Я пробовал:

  • TextFieldDidEndEditing (для вызова resignFirstResponder)
  • В методе viewWillDissaper (я также называл resignFirstResponder)

    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }
    
    func textFieldDidEndEditing(textField: UITextField) {
        print("Resign Last TextField")
        textField.resignFirstResponder()
    }
    
    func textFieldDidBeginEditing(textField: UITextField) {
        print("Did Begin editing")
        if textField == self.departing || textField == self.returning{
            textField.resignFirstResponder()
            self.lastTextFieldSelected = textField
    
            let datePickerViewController = Util.getViewController("DatePickerViewController") as! DatePickerViewController
            datePickerViewController.dateStyle = NSDateFormatterStyle.ShortStyle
            datePickerViewController.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve
            datePickerViewController.modalPresentationStyle = UIModalPresentationStyle.Custom
            datePickerViewController.datePickerDelegate = self
    
            self.presentViewController(datePickerViewController, animated: true, completion: nil)
        }
    }
    

Изменить: я ничего не пытаюсь с self.view.endEditing (true).

Я привел небольшой пример (я проверяю, что textFieldShouldBeginEditing позволяет мне закрыть клавиатуру): https://github.com/Abreu0101/TextFieldBug


person José Roberto Abreu    schedule 18.02.2016    source источник
comment
если вы хотите закрыть клавиатуру в viewWillDisappear для любого первого респондента, вы можете попробовать self.view.endEditing (false), если он все еще не закрывается, вы можете попробовать self.view.endEditing (true), что приведет к принудительному закрытию клавиатуры   -  person HardikDG    schedule 18.02.2016
comment
В описанной вами ситуации весь ваш textFieldDidBeginEditing код действительно выполняется?   -  person matt    schedule 18.02.2016
comment
Для снятия клавиатуры. Попробуйте self.view.endEditing = true   -  person tuledev    schedule 18.02.2016
comment
@matt, да, он выполняет код, но сначала запустите textFieldDidBeginEditing (на этом шаге первый, потеряет фокус), а при открытии datePickerViewController (клавиатура не скрывается). Затем делегат вызывает textFieldDidEndEditing (но ничего не происходит).   -  person José Roberto Abreu    schedule 19.02.2016
comment
@Pyro, anhtu, я попробую этот вариант (иногда назад пробовал, но не во viewWillDisapper).   -  person José Roberto Abreu    schedule 19.02.2016


Ответы (1)


Похоже, ваш textFieldDidEndEditing и другие методы даже не вызываются. Убедитесь, что вы установили делегата UITextField:

textField.delegate = self

Также импортируйте UITextFielDelegate в свой класс.

Надеюсь, это поможет :)

person LinusGeffarth    schedule 18.02.2016
comment
Спасибо за ответ, у меня есть этот набор. - person José Roberto Abreu; 19.02.2016