Ios 如何在uisearchbar中始终显示Xbutton(清除按钮)
在我的应用程序中,我添加了一个 我的目的是使UISearch栏“X按钮”(中的清除按钮)始终可见 我已经尝试使用下面的代码,试图使“X按钮”始终可见。但是,它不起作用。如果我设置了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中完成。我正在附上
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;
}