【问题标题】:How to show Xbutton(clear button) always visible in uisearchbar [duplicate]如何在uisearchbar中显示Xbutton(清除按钮)始终可见[重复]
【发布时间】:2013-08-14 23:57:42
【问题描述】:

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

我的意图是让 UISearch Bar“X 按钮”(UITextField 中的清除按钮)始终可见。

我尝试使用下面的代码来尝试使“X 按钮”始终可见。但是,它不起作用。如果我设置tf.clearButtonMode = UITextFieldViewModeNeveruitextfield 中的清除按钮不会显示。不知道怎么回事?

我非常感谢任何人的帮助。为什么这不起作用?

代码(不工作)

for (UIView* v in searchBar.subviews)
{
    if ( [v isKindOfClass: [UITextField class]] )
    {
        UITextField *tf = (UITextField *)v;
        tf.delegate = self;
        tf.clearButtonMode = UITextFieldViewModeAlways;
        break;
    }
}

目标:

如果文本长度等于 0,我希望始终显示清除按钮

  • 即如果我不输入任何文字。

【问题讨论】:

  • 检查在您的 .xib 中显示取消按钮
  • 我的意思是我不想要“取消”——文本按钮。我的要求在 uisearch 栏中始终可见“X”标记按钮。这意味着uisearchbar中的uitextfield,清除按钮(uitextfield清除按钮“x”)总是需要可见
  • @banu,这是搜索栏的默认行为。
  • 我可以自定义这个吗?
  • 我认为不,因为如果文本字段为空白,则无需按下它。

标签: ios iphone ios5 uibutton ios5.1


【解决方案1】:
UITextField *searchBarTextField = nil;
    for (UIView *subview in self.searchBar.subviews)
    {
        if ([subview isKindOfClass:[UITextField class]])
        {
            searchBarTextField = (UITextField *)subview;
            searchBarTextField.clearButtonMode = UITextFieldViewModeAlways;
            break;
        }
    }

【讨论】:

  • 嗨 iPatel 我也在添加相同的代码。但是当文本为空白时,X 按钮会消失。
  • @iPatel - 先生,您在说什么新消息?
  • @banu- 将此代码放入 viewDidLoad (创建 UISearchBar 之后) 方法
  • @iPatel - 看看问题,而不仅仅是问题的标题。
  • @TheTiger-sir ji.. 如果您有疑问,请解释我哪里错了。将此代码放在 viewDidLoad (在创建 UISearchBar 之后)
【解决方案2】:

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

【讨论】:

  • 您好 user2526811。我知道,但我的要求是如果文本为空白,那么如果用户单击清除按钮,文本字段应该辞职第一响应者。
【解决方案3】:

你可以在 Xib 中做到这一点。我附上截图。

并且以编程方式

myUITextField.clearButtonMode = UITextFieldViewModeAlways;

【讨论】:

  • 是的,我在编码中手动设置,因为我使用的是 UISearchbar。 @user2526811 说这是默认行为。我可以为 UITextField 创建自定义清除按钮吗?
  • 她要求的是 searchBar 而不是 TextField。
  • 是的,如果搜索栏中没有任何内容,则它没有显示。尝试添加一些字符。这是默认行为
  • 回答这个问题的人对始终的概念感到非常困难。
【解决方案4】:

我试图得到它,但不幸的是,没有办法使用 UITextField 的 ClearButton(X) 进行自定义。

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

只需自己清除字段并调用 resignFirstResponder 。

-(BOOL)textFieldShouldClear:(UITextField *)textField
{
    textField.text = @"";
    [textField resignFirstResponder];

    return NO;
}

关于它的文档HERE

【讨论】:

  • 没有它的服装清除按钮工作正常。我将发布完整的代码
【解决方案5】:

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

AppleDocs:

UITextFieldViewModeAlways 覆盖视图总是显示,如果 文本字段包含文本。

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

-(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;
}

【讨论】:

    猜你喜欢
    • 2013-10-30
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 2010-10-29
    • 2023-03-19
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多