当前位置: 首页 > 知识库问答 >
问题:

当用户开始输入时清除UITextField

潘琨
2023-03-14

简而言之:如何让UITextField框在用户第一次按键时移除所有内容?我不希望信息被删除,直到用户开始输入一些东西。即,在开始编辑时清除它是不够的。

长版本:我有三个UITextField循环(使用返回键并在“shouldReturn”方法中捕获按键。UITextField 中已有文本,如果用户未键入任何内容,而只是转到下一个 UITextField,则该值应保留(默认行为)。

但是我希望如果用户开始输入,它会首先自动清除文本。比如突出显示整个字段,然后键入任何内容都会删除字段,然后添加用户按键。

“编辑开始时清除”不好,因为文本会在字段中出现的光标上立即清除。这不是我们想要的。我想我可以在这里使用占位符,但这并不能作为默认值,而且我找不到默认值属性。突出显示和选择的属性在这方面也没有任何作用。

共有3个答案

彭雨华
2023-03-14

我要感谢人们的回答,我实现了这里描述的两种主要方法,并且都完美地工作。但后来我遇到了一个更简单,更好的答案,只涉及一行代码:)

在text Field的didStart inEdting方法中,放置[self.textFieldselectAll: self];or[self.textFieldselectAll: nil];

我找到的原始答案是选择all:self,但这显示了剪切/复制/粘贴菜单。如果发送的是nil而不是self,则不会显示菜单。

添加这一行代码会在输入文本字段时突出显示文本(从而给用户一个视觉提示),并且只在按下一个键时删除所有内容。

鞠建安
2023-03-14

有一个委托方法叫做

textFieldDidBeginEditing:(UITextField*) tf{
  tf.startedEdinting = YES;
}

textFeildDidEndEditing: (UITextField*) tf {
  tf.startedEditing = NO;
}

将类别中的开始编辑添加到UITextField。

然后,如果值发生变化,请清除该字段:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
 if (textField.startEditing){
  textField.text = string;
 } else {
  textField.text = [textField.text stringByReplacingCharactersInRange:range withString:string];
 }
}

可以通过以下方式将该属性添加到 UITextField 类别:

h

@property (nonatomic, assign) BOOL startEditing;

m

@dynamic startEditing;

- (void) setStartEditing:(BOOL)startEditing_in{ 
NSNumber* num = [NSNumber numberWithBool:startEditing_in]; 
objc_setAssociatedObject(self, myConstant, num, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 
} 
- (BOOL) startEditing{ 
NSNumber* num = objc_getAssociatedObject(self, myConstant); 
return [num boolValue]; 
}
元修然
2023-03-14

在< code >中声明一个< code>BOOL变量。h文件。

BOOL clearField;

并实现委托方法,例如:

-(void)textFieldDidBeginEditing:(UITextField *)textField
{
   clearField = YES;
}

-(void)textFieldDidEndEditing:(UITextField *)textField
{
  clearField = NO;
}

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
  clearField = NO;
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
  if(clearField)
  {
     textField.text = @""
     clearField = NO;
  }
}
 类似资料:
  • 默认行为是字段中的提示文本在字段被聚焦时被擦除。这是当标记在字段中时。 是否可以配置文本字段,以便仅在用户开始键入时删除提示文本? 否则,我需要在每个文本字段旁边/上方添加一个标签,以描述其中的值。

  • 问题内容: 用户停止键入时需要执行搜索。我知道我应该使用 setTimeout() 。但是使用 Reactjs我找不到它是如何工作的。 有人可以告诉我当用户停止键入几秒钟(假设为5)时如何调用方法(将处理Search)。我不知道该在哪里编写代码来检查用户是否停止键入。 我想在用户停止键入时调用sendToParent方法。 问题答案: 您可以按照以下方式使用您的代码, 另外,您需要在构造函数中绑定

  • 我一直在研究清理用户输入的最有效方法。我的应用程序是一个简单的post请求,用于对用户进行身份验证。在网上我可以找到十几种不同的“最佳”方法。这些方法中有很多都使用不推荐的php函数,或者看起来过于复杂。为了连接到我的sql数据库,我使用PDO类。 在搜索自己的函数时,我无意中发现: 带有绑定参数的预准备语句不仅更可移植、更方便、不受SQL注入的影响,而且通常比内插查询执行得快得多,因为服务器端和

  • 问题内容: 我在下面使用一个变量。 这由我的输入字段使用。 激活后,我想清除我的输入字段。但是,我不确定该怎么做。 另外,如本例所示,有人指出我应该将属性用于输入值。我还不清楚这到底意味着什么。在这种情况下有什么意义? 问题答案: 您可以使用输入类型=“重置”

  • 问题内容: 我正在构建Codeigniter应用程序,并且正在尽最大努力防止SQL注入。我正在使用Active Record方法构造所有查询。我知道Active Record会自动清除输入内容,但是我想知道到底是什么程度?它只是转义所有引号,还是做更多呢?如何防止混淆的SQL注入或其他更高级的注入? 基本上,我正在寻找有关CI如何清理数据的深入说明。有人知道吗 问题答案: 完全像这样(对于MySQ

  • 我在服务器端ti get post变量中编写了一个php代码。