如何检测UITextField何时是第一个响应者

时间:2011-06-12 10:47:45

标签: iphone objective-c

如何检测用户何时选择文本字段?我想删除UItextField.Text当用户选择UItextField时。例如,我有userName字段,默认文本“输入您的用户名”。我希望在UITextField成为第一个响应者时删除文本。

4 个答案:

答案 0 :(得分:8)

请尝试使用UITextField占位符属性。

例如:

UITextField *userName= [[UITextField alloc] 
                 initWithFrame:CGRectMake(110, 10, 185, 30)];
userName.placeholder = @"enter your user name";

就是这样。你完成了。 Apple将为您处理剩下的事情,所以它真的比尝试自己做的更好。

答案 1 :(得分:2)

根据UITextField

的建议使用@Richard Brightwell.的占位符属性

您可以按以下方式使用

myTextField = [[UITextField alloc] initWithFrame:CGRectMake(x,y,width,height)];
.............................................................................
.............................................................................
myTextField.placeholder = @"Enter your user name " ;
.............................................................................

有关更多信息,请查看Apple文档中的UITextField

答案 2 :(得分:1)

首先在textField中添加一个更改属性:

[nameText addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

然后在这里创建textFieldDidChange方法:

- (IBAction)textFieldDidChange:(id)sender
{
NSString* nm = [[NSString alloc] init];
NSString* ys = [[NSString alloc] init];

if(sender == nameText)
{

    nameText.textColor = [UIColor clearColor];
    [nameLabel setText:nm];

}
else
{
    yasText.textColor = [UIColor clearColor];
    [yasLabel setText:ys];
}
}

这是您可以在目的中更改它的示例代码。

答案 3 :(得分:0)

这是一个旧线程,但我想添加swift 3.0版本。您可以在viewDidLoad方法中将viewcontroller设置为UITextfield的委托,然后实现委托方法。 Swift 3.0

class myViewController: UIViewController {

  //other properties
  @IBOutlet weak var myTextField: UITextField!

  override func viewDidLoad() {
    super.viewDidLoad()
    ...
    myTextField.delegate = self
    ....
  }
...
}

extension myViewController: UITextFieldDelegate {

  func textFieldDidBeginEditing(_ textField: UITextField) {
    textField.text = ""
    ...
  }