SkyFloatingLabelTextField 自动将标签向上移动到焦点上

SkyFloatingLabelTextField auto move label up on focus

我是新手!我正在使用 Swift 4 并且我已经配置了名为 SkyFloatLabelTextField.

的插件

我想知道是否有人解决了如何在光标处于焦点上时自动向上移动标签?我希望标签在您 select 文本字段时向上移动。目前您必须键入标签才能向上移动。

谢谢。

更新 2

我已经分叉了该项目并进行了必要的更改。你可以看看here。我还向原作者发起了 Pull Request,所以这个功能可能会添加到原始项目中。

要使用该行为,只需设置 myFloatingTextField.isAnimationOnTouch 0 true。这将使动画在您点击文本字段时立即发生。

编码愉快!

更新 1

所以问题更多地与 SkyFloatingLabelTextField 的行为有关。抱歉造成误会!

在 github 页面上的第一组代码之后,标签会在您键入时立即向上移动。所以你想从触摸中得到它吗? 然后你应该fork这个项目,并采用来自

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

一触即达。这可以在委托方法 func textFieldDidBeginEditing(_ textField: UITextField)

中完成

完成此操作后,我认为您将能够在用户触摸文本字段时让标签向上移动。


原答案

这不取决于您使用的标签,每种视图的工作流程都是相同的:键盘出现并且文本字段应该向上移动,这样键盘就不会遮挡文本字段。

要实现此目的,请查看此 SO 答案:出现键盘时移动文本字段 swift .

我不想在其中复制整个代码,只是为您指明正确的方向。

编码愉快!

您可以通过子类化 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,您也必须对其进行子类化,但想法相同。