我是这个的新手!我正在使用 Swift 4,并且我已经配置了名为SkyFloatLabelTextField的插件。
我想知道如果光标在焦点上,其他人是否已经解决了如何自动向上移动标签?我希望标签在您选择文本字段时向上移动。目前,您必须键入标签才能向上移动。
谢谢你。
我是这个的新手!我正在使用 Swift 4,并且我已经配置了名为SkyFloatLabelTextField的插件。
我想知道如果光标在焦点上,其他人是否已经解决了如何自动向上移动标签?我希望标签在您选择文本字段时向上移动。目前,您必须键入标签才能向上移动。
谢谢你。
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
你也必须继承它,但同样的想法。
更新 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 。
我不想在那里复制整个代码,只需将您指向正确的方向即可。
快乐编码!