Кнопка «Переместить» и «Просмотр», когда клавиатура появляется в Swift - PullRequest
0 голосов
/ 26 октября 2018

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

Если вы использовали приложение Robinhood, оно одинаково функционирует при входе или регистрации.

Несколько других сообщений не смогли решить эту проблему для меня.

Перемещение вида с клавиатуры с помощью Swift

Существует ли внешнее репо или решение, которое уже решило эту функцию?

1 Ответ

0 голосов
/ 27 октября 2018
  1. Сначала напишите приведенный ниже код в расширение пользовательского интерфейса.

расширение UIView {

func bindToKeyboard() {
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(_:)), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
}

@objc func keyboardWillChange(_ notification: NSNotification) {
    let duration = notification.userInfo![UIResponder.keyboardAnimationDurationUserInfoKey] as! Double
    let curve = notification.userInfo![UIResponder.keyboardAnimationCurveUserInfoKey] as! UInt
    let begginingFrame = (notification.userInfo![UIResponder.keyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue
    let endFrame = (notification.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
    let deltaY = endFrame.origin.y - begginingFrame.origin.y

    UIView.animateKeyframes(withDuration: duration, delay: 0.0, options: UIView.KeyframeAnimationOptions(rawValue: curve), animations: {
        self.frame.origin.y += deltaY
    }, completion: nil)
}

}

  1. Затем используйте эту функцию, как я использовал ниже.

    переопределить функцию viewDidLoad () {

        super.viewDidLoad()
        yourButtonName.bindToKeyboard()
    }
    

Надеюсь, это будет правильное решение для вас.

...