在UITextField中按下清除按钮时隐藏键盘

Nav*_*afi 22 iphone objective-c uitextfield ios4

UITextField按下清除按钮时有没有办法隐藏键盘?

Mos*_*she 41

是的,虽然我怀疑这样做会违反Apple人机界面指南.

为此,请将以下方法添加到视图控制器的实现文件中.然后将视图控制器放入文本字​​段的委托中.

- (BOOL) textFieldShouldClear:(UITextField *)textField{
    [textField resignFirstResponder];   
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

这种方法的缺点是,如果您想要阻止文本字段清除,您的代码就会变得混乱.相反,您可能尝试定义自定义方法,然后将其连接到valueDidChange方法并检查空值.

-(IBAction)hideKeyboardFromTextField:(id)sender{
  //TODO: Check if the previous value was longer than one character to differentiate
  //between backspace and clear. 

  //check if the editing caused the box to be empty
  if([[sender value] isEqualToString:@""] || [sender value] == nil)
    [sender resignFirstResponder];
  }
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是,当UITextField中有一个字符时,您无法轻易区分清除按钮和点击删除按钮.

正如我在回答开头所说的那样,首先这是不可取的,正如这里的答案所示,实施起来并不容易.考虑到所涉及的困难以及它不会带来最佳用户体验这一事实,我认为这不值得麻烦.


小智 10

这段代码绝对有助于我隐藏密钥板,同时清除文本字段的内容

- (BOOL)textFieldShouldClear:(UITextField *)textField
{
    textField.text = @"";
    return NO;
}
Run Code Online (Sandbox Code Playgroud)