【问题标题】:textDidChange method called twice when click on Clear button in UISearch bar单击 UISearch 栏中的清除按钮时,textDidChange 方法调用了两次
【发布时间】:2013-09-29 10:01:23
【问题描述】:

我使用的是 iOS7,我有一个搜索栏。我正在使用 textDidChange 方法来获取每个字符并处理我的代码,当我们有文本时,我有明确的“X 按钮”。在以前的版本中,当单击清除按钮时,textDidChange 方法被调用一次,我们曾经在那里处理代码。

但在 iOS7 中,单击清除按钮时会调用此方法两次,我也可以在示例代码中看到此行为

  • (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{

【问题讨论】:

  • 我面临同样的问题。有人可以确认这是一个错误还是在以前的 iOS 版本中也以这种方式工作。另外,有人可以告诉我如何忽略其中一个连续事件吗?提前致谢。

标签: ios uisearchbar


【解决方案1】:

当你在模拟器中工作并在搜索栏中用电脑键盘输入时,有时会调用两次方法

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)newText.

为避免此问题,您必须使用模拟器键盘。 貌似是模拟器的bug。

【讨论】:

    【解决方案2】:

    我有同样的问题,我通过创建一个 ivar 解决了它...这对我有用,因为我在调用它后重新加载了我的表,并在我的 reloadTable 方法中重置了textDidClear = NO;

    - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
    {
        if (([searchText isEqualToString:@""]) && (textDidClear == NO))
        {
            textDidClear = YES;
            [_categoryManager loadCategoriesWithToken:nil];
    
        } else if (textDidClear == NO) {
            textDidClear = NO;
            [_productManager loadProductsFromSearch:searchText tokenIdent:nil];
        }
    }
    

    【讨论】:

      【解决方案3】:

      您可以创建私有属性:

      @property (strong, nonatomic) NSString *searchedText;
      

      并用它来检查是否相等:

      -(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)newText{
          if(![self.searchedText isEqualToString:newText]){ 
              self.searchedText = [[NSString alloc] initWithString:newText];
              //Do your magic
          }
      }
      

      【讨论】:

        【解决方案4】:

        我自己试过了,确实如此,该方法被调用了两次,参数完全相同。阅读文档并没有说明任何内容,因此它可能只是一个错误。

        你可以忽略它吗?

        【讨论】:

        • 我实际上不能忽略我的整个搜索,实际上是基于我们正在搜索的字符,当单击清除按钮时,我们将在此处获得空字符串,我们正在编写代码
        猜你喜欢
        • 2017-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-17
        相关资源
        最近更新 更多