Ios 如何在uisearchbar中始终显示Xbutton(清除按钮)

Ios 如何在uisearchbar中始终显示Xbutton(清除按钮),ios,iphone,ios5,uibutton,ios5.1,Ios,Iphone,Ios5,Uibutton,Ios5.1,在我的应用程序中,我添加了一个 我的目的是使UISearch栏“X按钮”(中的清除按钮)始终可见 我已经尝试使用下面的代码,试图使“X按钮”始终可见。但是,它不起作用。如果我设置了tf.clearButtonMode=UITextFieldViewModeNever,则中的clear按钮不会显示。我不知道怎么了 我真的很感激这里的任何人的帮助。为什么这不起作用 代码(不工作) 目标: 如果文本长度等于0,我希望始终显示“清除”按钮 i、 如果我没有输入任何文本 U可以在Xib中完成。我正在附上

在我的应用程序中,我添加了一个

我的目的是使UISearch栏“X按钮”(中的清除按钮)始终可见

我已经尝试使用下面的代码,试图使“X按钮”始终可见。但是,它不起作用。如果我设置了
tf.clearButtonMode=UITextFieldViewModeNever
,则中的clear按钮不会显示。我不知道怎么了

我真的很感激这里的任何人的帮助。为什么这不起作用

代码(不工作) 目标: 如果文本长度等于0,我希望始终显示“清除”按钮

  • i、 如果我没有输入任何文本

    • U可以在Xib中完成。我正在附上截图

      以编程的方式

      myUITextField.clearButtonMode = UITextFieldViewModeAlways;
      

      这是搜索栏的默认行为。因为如果
      UITextField
      为空,则无需按下它。

      我尝试获取它,但不幸的是,无法使用UITextField的ClearButton(X)进行自定义。

      有一种方法,如果您只需要它来获取键盘,那么只需覆盖此方法:

      只需自己清除字段并致电辞职第一响应者


      关于它的文档

      这是一个较老的问题,但我在这里提出了一个相同的客户请求:“只要光标在搜索字段中,就显示clearButton。我们希望能够在任何阶段使用此按钮取消搜索”
      除了添加自定义按钮之外,我还想出了一个解决方案:

      AppleDocs:

      UITextFieldViewModeAlways如果 文本字段包含文本

      因此,添加空白作为第一个字符将使clearButton处于活动状态。
      在搜索字段中输入文本后,或在使用文本之前的任何其他位置,都可以删除前导空格

      -(void)textFieldDidBeginEditing:(UITextField *)textField{
          //adding a whitespace at first start sets the clearButton active
          textField.text = @" ";
      }
      
      
      -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
          ...
          NSString *completeNewString = [textField.text stringByReplacingCharactersInRange:range withString:string];
          //remove the dummyWhitespace (here or later in code, as needed)
          self.searchString = [completeNewString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
          ...
          return YES;
      }
      

      复选框中显示了取消按钮。我的意思是我不想要“取消”--文本按钮。我的要求是在UI搜索栏中始终可见“X”标记按钮。这意味着uisearchbar中的uitextfield清除按钮(uitextfield清除按钮“x”)始终需要visible@banu,这是搜索栏的默认行为。我可以自定义它吗?我想不可以,因为如果文本字段为空,则无需按它。是的,我在编码中手动设置,因为我使用的是UISearchbar@user2526811表示这是默认行为。我可以为UITextField..创建自定义清除按钮吗?她要求的是搜索栏而不是文本字段。是,如果搜索栏中没有任何内容,则它不会显示。尝试添加一些字符。这是一个默认的行为,在这个问题上,人们对always.hi iPatel的概念感到非常困难。我还添加了相同的代码。但当文本为空时,X按钮消失。@iPatel-Sir您在告诉新的什么?@banu-将此代码放入viewdiload(创建UISearchBar后)method@iPatel-看看这个问题,而不仅仅是问题的标题。@TheTiger-sir ji。。如果你有疑问,请解释我错在哪里。将此代码放在viewDidLoad(在创建UISearchBar之后)Hi user2526811。我知道,但我的要求是,如果文本为空,那么如果用户单击清除按钮,文本字段应退出第一响应者。没有,其清除按钮工作正常。我将发布完整的代码
      UITextField *searchBarTextField = nil;
          for (UIView *subview in self.searchBar.subviews)
          {
              if ([subview isKindOfClass:[UITextField class]])
              {
                  searchBarTextField = (UITextField *)subview;
                  searchBarTextField.clearButtonMode = UITextFieldViewModeAlways;
                  break;
              }
          }
      
      -(BOOL)textFieldShouldClear:(UITextField *)textField
      {
          textField.text = @"";
          [textField resignFirstResponder];
      
          return NO;
      }
      
      -(void)textFieldDidBeginEditing:(UITextField *)textField{
          //adding a whitespace at first start sets the clearButton active
          textField.text = @" ";
      }
      
      
      -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
          ...
          NSString *completeNewString = [textField.text stringByReplacingCharactersInRange:range withString:string];
          //remove the dummyWhitespace (here or later in code, as needed)
          self.searchString = [completeNewString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
          ...
          return YES;
      }