清除UITextField占位符文本

Sno*_*ash 22 iphone uitextfield

在Xcode4中,我为UITextField创建了一些占位符文本,我希望它能清除用户点击框中的内容.

因此,在文本字段的属性检查器中,我单击了"编辑开始时清除"但是当我点击文本框时它不会立即删除文本(它只在您开始键入时消失).

有没有办法在文本框中点击时立即删除占位符文本?

Mat*_*uch 68

使您的ViewController成为textField的委托并实现这两个方法:

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    textField.placeholder = nil;
}

- (void)textFieldDidEndEditing:(UITextField *)textField {
    textField.placeholder = @"Your Placeholdertext";
}
Run Code Online (Sandbox Code Playgroud)

  • 不.如果存在"常规"文本,则占位符文本不可见. (4认同)
  • 仅供参考,当您将UITextField设置为居中对齐,为其分配占位符,然后清除占位符(无论是nil还是@"")时,iOS 7.0上存在一个错误.开始编辑UITextField,你会发现光标处于奇怪的位置. (2认同)

eta*_*luz 8

Matthias Bauch提供的解决方案效果很好,但是当您有多个人UITextField担心时会发生什么?现在你必须识别哪些UITextField被称为 textFieldDidEndEditing:textField(可能通过使用标签属性的),并导致更多不必要的代码和逻辑.

一个更简单的解决方案:只需为占位符文本指定一个清晰的颜色,完成编辑后,恢复为原始颜色.通过这种方式,您textFieldDidEndEditing:textField可以textField在Bauch的解决方案中将其相应的文本标识为无效.

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    [textField setValue:[UIColor clearColor] forKeyPath:@"_placeholderLabel.textColor"];
}

- (void)textFieldDidEndEditing:(UITextField *)textField {
    [textField setValue:[UIColor placeholderColor] forKeyPath:@"_placeholderLabel.textColor"];
}
Run Code Online (Sandbox Code Playgroud)