如何手动添加在文本字段内单击时消失的UITextField占位符文本?

时间:2016-06-15 15:36:35

标签: ios swift uitextfield

我目前有一个自定义文本字段,因此添加占位符文本的故事板方式不起作用。现在我在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()

但文本字段显示为空白。

3 个答案:

答案 0 :(得分:1)

发现了什么问题。 textField.placeholder = "Some text..."确实有效,因为我的背景是深色的,所以我看不到占位符文字。

答案 1 :(得分:0)

不幸的是,文本视图没有占位符文本选项。

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

如果可以,您可以使用UITextField。在这种情况下,您可以使用textFieldName.placeholder =“Enter text”,这将起作用。

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

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

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

答案 2 :(得分:0)

您可以使用委托方法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
  }
}