SkyFloatingLabelTextField自动将标签移至焦点上

时间:2019-01-17 14:33:57

标签: ios iphone swift skyfloatinglabeltextfield

我是这个的新手!我正在使用Swift 4,并且已配置名为SkyFloatLabelTextField的插件。

我想知道是否有人解决了如果光标对准焦点如何自动向上移动标签?我希望标签在您选择文本字段时向上移动。此刻,您需要键入标签才能上移。

谢谢。

2 个答案:

答案 0 :(得分:1)

您可以通过将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,则也必须继承该子类,但是要保持相同的想法。

答案 1 :(得分:0)

更新2

我已经分叉了项目并进行了必要的更改。您可以检出here。我还向原始作者发出了“拉取请求”,因此该功能可能会添加到原始项目中。

要使用此行为,只需设置myFloatingTextField.isAnimationOnTouch 0 true。当您在文本字段中点击时,这将导致动画正确播放。

编码愉快!

更新1

因此,问题与SkyFloatingLabelTextField的行为有关。抱歉误会了!

在github页面上的第一堆代码之后,标签将在您键入时立即上移。因此,您想要一触即发吗? 然后您应该分叉该项目,并采用

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

实现触摸效果。这可以在委托方法func textFieldDidBeginEditing(_ textField: UITextField)

中完成

完成此操作后,我认为一旦用户触摸textField,您就可以使标签向上移动。


原始答案

这不取决于您使用的标签,每种视图的工作流程都相同:出现键盘,并且textField应该向上移动,以便键盘不会遮盖textField。

要实现这一目标,请查看以下SO答案:Move textfield when keyboard appears swift

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

编码愉快!