Swift отклоняет пользовательскую клавиатуру, странное поведение


У меня самая странная ситуация с кастомной клавиатурой.
Прежде всего, я настроил фиктивный вид для текстового поля, чтобы скрыть стандартную клавиатуру let dummyView : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) amountField.inputView = dummyView
Затем у меня есть собственная клавиатура, которая анимируется, когда начинается редактирование в текстовом поле.

func textFieldDidBeginEditing(textField: UITextField) {
        keyboardContainer.hidden = false
        UIView.animateWithDuration(0.6, animations: {
            self.keyboardContainer.frame = self.keyboardScreenPosition!
            }, completion: {
                finished in
                if finished {
                    //just in case
                }
        })

    }


Кроме того, я установил кнопку, которая должна завершить редактирование и скрыть мою пользовательскую клавиатуру.

@IBAction func calculeaza(sender: AnyObject) {

        self.amountField.resignFirstResponder()

        UIView.animateWithDuration(0.6, animations: {

            self.keyboardContainer.frame.origin.y = self.view.bounds.height
            }, completion: {
                finished in
                if finished {

                }
        })
    }


Самая странная часть связана с resignFirstResponder(). Позвольте мне объяснить: если эта часть не включена, клавиатура отлично скрывается (но текстовое поле продолжает мигать курсором, что не является опцией c).
Если часть отставки включена, клавиатура анимируется сверху до текущей позиции, а затем при повторном нажатии кнопки она скользит вниз, как и предполагалось.
Я действительно озадачен тем, почему это происходит ... Я отладил размеры представления, и высоты в порядке, поэтому он должен скользить с самого начала. Я действительно не понимаю, что происходит.
Любая помощь очень ценится, большое спасибо!

РЕДАКТИРОВАТЬ: еще один странный эффект возникает, если я перемещаю часть отставки (или редактирование суперконца) в закрытии окончания анимации. Клавиатура скользит нормально, затем снова появляется на экране


person Razvan Soneriu    schedule 13.03.2015    source источник


Ответы (1)


Это похоже на проблему с ограничениями автомакета. Они обновляются после animateWithDuration, что потенциально вызывает это странное поведение. Если у вас есть (а) ограничения в раскадровке, используемые для автомакета, попробуйте обновить это (/те). Если вы еще этого не сделали, вам нужно добавить его как IBOutlet и анимировать изменение автомакета во время.

Например, предположим, что ограничение называется theRelevantConstraint. Затем замените средние линии

self.theRelevantConstraint.constant = valueItShouldBe
UIView.animateWithDuration(0.6, animations: {
  self.view.layoutIfNeeded()
  }, completion: {
    finished in
    if finished {

    } 
})
person roc    schedule 14.10.2015