我是这个的新手!我正在使用Swift 4,并且已配置名为SkyFloatLabelTextField的插件。
我想知道是否有人解决了如果光标对准焦点如何自动向上移动标签?我希望标签在您选择文本字段时向上移动。此刻,您需要键入标签才能上移。
谢谢。
答案 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 。
我不想在其中复制整个代码,只是将您指向正确的方向。
编码愉快!