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

问题描述

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

解决方法

        首先,为您的textField添加一个change属性,如下所示:
[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];
}
}
这是示例代码,您可以根据需要对其进行更改。     ,        尝试改用UITextField占位符属性。 例如:
UITextField *userName= [[UITextField alloc] 
                 initWithFrame:CGRectMake(110,10,185,30)];
userName.placeholder = @\"enter your user name\";
而已。你完成了。苹果公司将为您处理其余的工作,因此,与尝试自己完成所有工作相比,这确实是一种更好的方法。     ,        按照
@Richard Brightwell.
的建议使用
UITextField
的占位符属性 您可以如下使用它
myTextField = [[UITextField alloc] initWithFrame:CGRectMake(x,y,width,height)];
.............................................................................
.............................................................................
myTextField.placeholder = @\"Enter your user name \" ;
.............................................................................
有关更多信息,请查看Apple文档中的UITextField。     ,        这是一个旧线程,但我想添加swift 3.0版本。您可以在viewDidLoad方法中将viewcontroller设置为UITextfield的委托,然后实现委托方法。斯威夫特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 = \"\"
    ...
  }