【问题标题】:How to manually add UITextField placeholder text that disappears when clicked inside textfield?如何手动添加在文本字段内单击时消失的 UITextField 占位符文本?
【发布时间】:2016-06-16 00:18:05
【问题描述】:

我目前有一个自定义文本字段,因此添加占位符文本的情节提要方式不起作用。现在我在 viewDidLoad 中使用此代码,但是当我在文本字段内单击时,占位符文本仍然存在。

  usernameOrEmailTextField.text = "Username or email"
    usernameOrEmailTextField.textColor = UIColor.whiteColor()

有没有办法让文本在单击文本字段时消失,以便用户可以在文本字段中键入自己的信息?

这是我的自定义文本字段:

class CustomTextField: UITextField{

  required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)!

//Border
self.layer.cornerRadius = 10.0;
self.layer.borderWidth = 0.75
self.layer.borderColor = UIColor.whiteColor().CGColor
//Background
self.backgroundColor = UIColor(white: 1, alpha: 0.0)

//Text
self.textColor = UIColor.whiteColor()
self.textAlignment = NSTextAlignment.Left
  }

}

我尝试使用 .placeholder 而不是 .text:

  usernameOrEmailTextField.placeholder = "Username or email"
usernameOrEmailTextField.textColor = UIColor.whiteColor()

但文本字段似乎是空白的。

【问题讨论】:

  • placeholder 类中有 UITextField 属性。你用过搜索吗?..
  • 当我执行 textField.placeholder = "Some text..." 时,在该视图上看不到占位符文本
  • 您的视图的背景颜色是什么?占位符文本为浅灰色。
  • 有没有办法改变占位符文本颜色
  • 背景是木色

标签: ios swift uitextfield


【解决方案1】:

找出问题所在。 textField.placeholder = "Some text..." 确实有效,只是我的背景是深色,所以我看不到占位符文本。

【讨论】:

    【解决方案2】:

    您可以为此使用委托方法textFieldShouldBeginEditing(textField:)

    class ViewController: UIViewController, UITextFieldDelegate {
    
      @IBOutlet var textField: CustomTextField!
    
      override func viewDidLoad() {
        super.viewDidLoad()
    
        textField.placeholder = "Some text..."
      }
    
      func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
        textField.placeholder = ""
        return true
      }
    }
    

    【讨论】:

    • 它应该会自行消失,尽管在插入一个字符后,我认为他唯一的问题是他使用了错误类型的文本框,或者他设置的是 .text 而不是 .placeholder
    • 我确实知道您来自哪里,但如果这意味着他希望占位符仅通过选择而不是等待插入字符而消失
    • 这是一个自定义文本字段:
    • 我编辑了我的原始帖子以包含自定义文本字段
    • 这也应该适用于您的CustomTextField,因为它继承自UITextField
    【解决方案3】:

    很遗憾,文本视图没有占位符文本选项。

    您正在做的是更改文本字段的文本,点击时不会消失。

    如果可以,您可以使用 UITextField。在这种情况下,您可以使用 textFieldName.placeholder = "Enter text",这样就可以了。

    但要回答实际问题,我过去这样做的方法是将 UILabel 放在 UITextField 之上,然后使用文本视图的委托方法在用户点击时隐藏/显示标签。

    示例:如果用户didBeginEditing文本字段隐藏标签,如果didEndEditing,检查里面的文本是否为空,如果是则显示标签,否则不。

    编辑:要清楚,对我来说,您似乎使用的是 TextView,但说的是 TextField。包括 IBOutlet 肯定会向我们展示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-13
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多