Swift:MaterialComponents TextFields快速单击时出现意外的占位符行为

Ano*_*s-E 5 ios swift material-components material-components-ios

我已经在Github上的MaterialComponents上打开了这个问题,但似乎还没有答案.问题是,当我单击文本字段以激活然后我在外面单击时,它工作正常但是当我重复这样做时,文本字段的占位符将始终位于顶部

这是图像的问题

当textfield执行加载时: 在此输入图像描述

当textfield激活时: 在此输入图像描述

当我们重复单击文本字段然后再次单击外部时,它将如下所示 在此输入图像描述

这是代码:

@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)
    }
Run Code Online (Sandbox Code Playgroud)

AD *_*ess -1

我个人会选择https://github.com/raulriera/TextFieldEffects CocoaPod,它有很多不同的样式可供您使用,最重要的是它的使用非常简单。

只需创建一个 pod 文件,pod init 然后添加以下内容:

use_frameworks!
pod 'TextFieldEffects'
Run Code Online (Sandbox Code Playgroud)

到您的 pod 并从终端安装它pod install

使用方法:

该库是一个简单的插件,一旦您将子类设置为其中一种效果并将模块设置为 TextFieldEffects,您将能够在故事板中看到所有 IBDesignable 设置。

您也可以根据需要以编程方式使用它,而无需故事板:

let textField = KaedeTextField(frame: textFieldFrame)
textField.placeholderColor = .darkGrayColor()
textField.foregroundColor = .lightGrayColor()

view.addSubView(textField)
Run Code Online (Sandbox Code Playgroud)