iOS“cancelPreviousPerformRequestsWithTarget”在搜索字段委托方法中不起作用
问题描述:
我在UISearchBarDelegate
协议方法textDidChange
中没有执行的方法cancelPreviousPerformRequestsWithTarget
有问题。iOS“cancelPreviousPerformRequestsWithTarget”在搜索字段委托方法中不起作用
- (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次,并且该方法连续调用5次。问题在哪里,嗯?
答
假设在您的测试中,搜索文本每次都不相同。所以取消请求将不匹配,因为您尚未对该对象发出请求。
而是使用:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:updateSelector object:nil];
到通配符选择和目标相匹配。
请注意,使用定时器比取消执行选择器更好...