1

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

我想知道如果光标在焦点上,其他人是否已经解决了如何自动向上移动标签?我希望标签在您选择文本字段时向上移动。目前,您必须键入标签才能向上移动。

谢谢你。

4

2 回答 2

2

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你也必须继承它,但同样的想法。

于 2019-01-17T15:24:11.040 回答
0

更新 2

我已经分叉了该项目并进行了必要的更改。你可以在这里查看。我还向原作者做了一个拉取请求,所以这个功能可能会被添加到原始项目中。

要使用该行为,只需设置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

我不想在那里复制整个代码,只需将您指向正确的方向即可。

快乐编码!

于 2019-01-17T14:44:10.760 回答