iOS" cancelPreviousPerformRequestsWithTarget"不适用于搜索字段委托方法

时间:2015-11-04 12:34:26

标签: ios uisearchbar

我遇到方法cancelPreviousPerformRequestsWithTarget未在UISearchBarDelegate协议方法textDidChange中执行的问题。

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    SEL updateSelector = @selector(updateTableViewWithSearchPhrase:);

    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:updateSelector object:searchText];

    [self performSelector:updateSelector withObject:searchText afterDelay:0.5f];
}

我已经连续快速点击了一个键盘按钮5次,并且该方法连续被调用了5次。问题出在哪里,嗯?

1 个答案:

答案 0 :(得分:0)

据推测,在您的测试中,搜索文本每次都不同。因此,取消请求无法匹配,因为您还没有使用该对象发出请求。

改为使用:

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:updateSelector object:nil];

通配符匹配选择器和目标。

请注意,除了取消执行选择器之外,使用计时器通常更好...