【问题标题】:iOS: Wait until user finishes typing and then send requestiOS:等到用户完成输入然后发送请求
【发布时间】:2014-07-01 16:35:05
【问题描述】:

我有一个简单的 UITableViewUISearchBar/UISearchDisplayController,它使用 RKObjectManager 从远程 ElasticSearch 服务器获取结果。 我遇到的问题是,如果用户快速键入或术语稍大一些请求失败,有时我没有得到结果。

是否可以选择等到用户停止输入然后发送请求 而不是按他输入的每个字母发送请求?

【问题讨论】:

    标签: ios objective-c uitableview uisearchbar


    【解决方案1】:

    在发送请求之前添加一个小延迟,然后如果用户继续输入则取消该延迟的请求

    - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
    {
        [NSObject cancelPreviousPerformRequestsWithTarget:self];
    
        [self performSelector:@selector(sendSearchRequest) withObject:searchText afterDelay:0.1f];
    }
    

    您可能需要调整延迟时间。太长,用户会注意到有延迟,太短,你会遇到和现在一样的问题

    【讨论】:

    【解决方案2】:

    这是 swift 版本

    NSObject.cancelPreviousPerformRequestsWithTarget(self)
    self.performSelector("searchForText:", withObject: searchString, afterDelay: 0.5)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 2017-03-07
      • 2016-04-27
      相关资源
      最近更新 更多