Кнопка перемещения и просмотр при появлении клавиатуры в swift

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

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

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

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

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

Вы писали код или пробовали обходные пути? Пожалуйста, поделитесь вопросом

Sateesh Yemireddi 26.10.2018 05:48

попробуйте: -github.com/hackiftekhar/IQKeyboardManager

VDPurohit 26.10.2018 08:18
1
2
1 408
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  1. Сначала напишите приведенный ниже код в расширение представления пользовательского интерфейса.

extension 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()
    }
    

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

Есть ли способ сделать продолжительность бесконечной? Когда я нажимаю на текстовое представление, кнопка перемещается вместе с клавиатурой, но как только я начинаю печатать, кнопка исчезает, и я предполагаю, что она вернется в исходное положение под клавиатурой.

Baily 02.11.2018 19:53

Есть ли способ сделать продолжительность бесконечной? Когда я нажимаю на текстовое представление, кнопка перемещается вместе с клавиатурой, но как только я начинаю печатать, кнопка исчезает, и я предполагаю, что она вернется в исходное положение под клавиатурой.

Hadiseh 22.04.2020 08:56

Другие вопросы по теме