如何在swift中使用Google Material MDCOutlinedTextField从文本字段中删除占位符文本?

Posted

技术标签:

【中文标题】如何在swift中使用Google Material MDCOutlinedTextField从文本字段中删除占位符文本?【英文标题】:how to remove place holder text from textfield using Google Material MDCOutlinedTextField in swift? 【发布时间】:2021-08-31 12:23:03 【问题描述】:

这是我编写的代码,但是当用户在文本字段中但没有文本时,占位符仍然出现在文本字段中,也显示在浮动标签中,当我在此文本字段中时,我只想删除

func setupGoogleMaterialTextFields(textFields: [MDCOutlinedTextField]) 
    let containerShceme = MDCContainerScheme()
    let colorScheme = MDCSemanticColorScheme()
    colorScheme.primaryColor = UIColor.white
    colorScheme.onSurfaceColor = UIColor.white
    containerShceme.colorScheme = colorScheme
    for textField in textFields 
        textField.label.text = textField.placeholder 
        textField.font = UIFont.myMediumSystemFont(ofSize: 18)

        textField.attributedPlaceholder = NSAttributedString(string: textField.placeholder ?? "",
                                                             attributes: [NSAttributedString.Key.foregroundColor: UIColor.white,
                                                                          NSAttributedString.Key.font: UIFont.myMediumSystemFont(ofSize: 16)])
        textField.containerRadius = 8
        textField.sizeToFit()
        textField.applyTheme(withScheme: containerShceme)
    

【问题讨论】:

你试过textField.placeholder = ""textField.placeholder = nil吗? 感谢@Alhomaidhi 的提示,我已经添加了 textField 代表,现在一切正常。 【参考方案1】:

我已像这样将委托分配给 textField。

func setupGoogleMaterialTextFields(textFields: [MDCOutlinedTextField]) 
    let containerShceme = MDCContainerScheme()
    let colorScheme = MDCSemanticColorScheme()
    colorScheme.primaryColor = UIColor.white
    colorScheme.onSurfaceColor = UIColor.white
    containerShceme.colorScheme = colorScheme
    for textField in textFields 
        textField.label.text = textField.placeholder 
        textField.font = UIFont.myMediumSystemFont(ofSize: 18)

        textField.attributedPlaceholder = NSAttributedString(string: textField.placeholder ?? "",
                                                             attributes: [NSAttributedString.Key.foregroundColor: UIColor.white,
                                                                          NSAttributedString.Key.font: UIFont.myMediumSystemFont(ofSize: 16)])
        textField.containerRadius = 8
        textField.sizeToFit()
        textField.applyTheme(withScheme: containerShceme)
        textField.delegate = self
    

在分配委托后执行此操作。

    extension youClassName: UITextFieldDelegate 

    func textFieldDidBeginEditing(_ textField: UITextField) 
        if textField.text?.isEmpty ?? false 
            textField.placeholder = nil
        
    

【讨论】:

以上是关于如何在swift中使用Google Material MDCOutlinedTextField从文本字段中删除占位符文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift中更改Google Map的myLocationButton的位置

如何在 Swift iOS 应用程序中添加 Google Drive API?

在 Swift 中,如何在继续编写代码之前安全地确保从 Google 检索数据(日期和时间)?

如何使用 swift 将 google 地方自动完成功能添加到 xcode(教程)

在 Swift 中写入 Google 表格

在swift中添加Google日历活动