SkyFloatingLabelTextField автоматически перемещает метку вверх по фокусу - PullRequest
0 голосов
/ 17 января 2019

Я новичок в этом! Я использую Swift 4, и я настроил плагин под названием SkyFloatLabelTextField .

Мне было интересно, решил ли кто-то еще, как автоматически переместить метку вверх, если курсор находится в фокусе? Я хочу, чтобы метка двигалась вверх, когда вы выбираете текстовое поле На данный момент вы должны набрать, чтобы метка двигалась вверх.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 января 2019

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

final class MovingTitleOnFocusTextField: SkyFloatingLabelTextField {

    override func becomeFirstResponder() -> Bool {
        setTitleVisible(true)
        return super.becomeFirstResponder()
    }

    override func resignFirstResponder() -> Bool {
        setTitleVisible(hasText || hasErrorMessage)
        return super.resignFirstResponder()
    }
}

Если вы используете SkyFloatingLabelTextFieldWithIcon, вы должны также создать подкласс, но та же идея.

0 голосов
/ 17 января 2019

ОБНОВЛЕНИЕ 2

Я разбудил проект и внес необходимые изменения. Вы можете проверить это здесь . Я также сделал Pull Request для первоначального автора, так что эта функциональность может быть добавлена ​​в исходный проект.

Чтобы использовать поведение, просто установите myFloatingTextField.isAnimationOnTouch 0 true. Это приведет к тому, что анимация произойдет прямо при нажатии в текстовом поле.

Удачного кодирования!

ОБНОВЛЕНИЕ 1

Таким образом, вопрос был больше связан с поведением SkyFloatingLabelTextField. Извините за недоразумение!

После самого первого набора кода на странице github, ярлык будет перемещаться вверх, как только вы наберете. Значит, вы хотите прямо от прикосновения? Затем вы должны разветвить проект и принять код из

@objc open func editingChanged() {
    updateControl(true)
    updateTitleLabel(true)
}

чтобы добиться этого на ощупь. Это можно сделать в методе делегата func textFieldDidBeginEditing(_ textField: UITextField)

Как только вы это сделаете, я думаю, вы сможете поднять метку вверх, как только пользователь коснется textField.


Оригинальный ответ

Это не зависит от используемых вами ярлыков, рабочий процесс одинаков для всех видов: появляется клавиатура, и textField должен двигаться вверх, чтобы клавиатура не закрывала textField.

Чтобы достичь этого, пожалуйста, посмотрите на этот SO-ответ: Перемещение текстового поля, когда клавиатура появляется быстро .

Я не хочу копировать весь код там, просто укажу вам правильное направление.

Удачного кодирования!

...