Swift:MaterialComponents TextFields快速单击时出现意外的占位符行为
Posted
技术标签:
【中文标题】Swift:MaterialComponents TextFields快速单击时出现意外的占位符行为【英文标题】:Swift: MaterialComponents TextFields Unexpected Placeholder Behavior when clicking fast 【发布时间】:2019-03-06 04:10:24 【问题描述】:我已经在MaterialComponents on Github 提出了这个问题,但似乎还没有答案。 问题是当我单击要激活的文本字段然后单击外部时,它工作正常,但是当我重复这样做时,文本字段的占位符将始终位于顶部
这是一个图像的问题
当文本字段确实加载时:
当文本字段处于活动状态时:
当我们重复单击文本字段然后再次单击外部时,它将如下所示
代码如下:
@IBOutlet weak var textfieldFloating: MDCTextField!
let tf = MDCTextInputControllerOutlined()
override func viewDidLoad()
super.viewDidLoad()
textfieldFloating.leftView = UIImageView(image: UIImage(named: "ic_lock_outline_white_18pt"))
textfieldFloating.leftViewMode = .always
textfieldFloating.placeholder = "Placeholder"
tf.textInput = textfieldFloating
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
self.view.endEditing(true)
【问题讨论】:
不幸的是,这是材料组件中的一个错误,最好等到他们自己修复错误 我已经重新创建了你的代码,它对我来说绝对是一个使用 MaterialComponents 的错误。可能与占位符的动画有关,就好像你快速点击它还没有完成动画但是它的位置坐标已经更新了。 感谢您告诉我。恐怕我忘记了代码中可能导致此问题的某个地方,但是如果问题出在库本身,您能建议我哪个库可以像这样工作吗?我正在尝试使用 SkyFloatingLabelTextField 但它们的动画不如材质组件流畅 @Anonymous-E 这个问题已经解决了吗?我正在使用 swift 4.2 但可能在 swift 5 中它已经修复了,你有没有为这个文本字段找到任何好的替代方案,我也遇到了同样的问题。 @MarkDylanBMercado 我已经更新到最新版本,现在运行良好 【参考方案1】:我个人会选择https://github.com/raulriera/TextFieldEffects CocoaPod 它有很多不同的样式供你使用,最重要的是它非常简单易用。
只需使用pod init
创建一个 pod 文件
然后添加:
use_frameworks!
pod 'TextFieldEffects'
到您的 pod 并从终端使用 pod install
安装它。
使用它:
该库是一个简单的插件,只要您将子类设置为其中一种效果并将模块设置为 TextFieldEffects,您就可以在故事板中看到所有 IBDesignable 设置。
您也可以根据需要以编程方式使用它而无需情节提要:
let textField = KaedeTextField(frame: textFieldFrame)
textField.placeholderColor = .darkGrayColor()
textField.foregroundColor = .lightGrayColor()
view.addSubView(textField)
【讨论】:
在我使用 MDC 文本字段之前,我也尝试过查看这个库,但是他们的动画与 Material Component 不匹配,因为我是 ios 开发人员,我正在从事的项目是需要的不过要与安卓版本相匹配,无论如何感谢您的回答。不过,您的回答可能对其他人有用!我会赞成这个以上是关于Swift:MaterialComponents TextFields快速单击时出现意外的占位符行为的主要内容,如果未能解决你的问题,请参考以下文章
带有 MaterialComponents 主题的 ActionBar 背景
使用 Theme.MaterialComponents.Light.NoActionBar 样式时,设置 Button Background 无效
错误:IllegalArgumentException:此组件上的样式要求您的应用主题为 Theme.MaterialComponents
带有 MaterialComponents 主题的 Android FAB 图标始终为黑色
由于 MDFInternationalization 和 MaterialComponents 目录不存在,无法 tns 构建 ios