我的应用程序中有一个UISearchBar。当用户键入任何术语时,将执行针对外部API的动态搜索。我将整个搜索词作为参数发送到API。
我的问题是,用户可以非常快速地输入。那么有没有办法代替向用户输入的每个字母请求API,我们是否可以创建延迟,即如果输入2个连续字母之间的差异非常小,将其合并为一个请求(而不是两个单独的请求)
我目前正在使用
[NSObject cancelPreviousPerformRequestsWithTarget:self];
[xmlParser performSelector:@selector(parseXMLFile:) withObject:url afterDelay:0.3];
但这只会造成延迟......如果差异非常小(即用户输入速度非常快),我希望parseXMLFile不会多次执行
答案 0 :(得分:0)
使用NSTimer。例如,安排计时器(带回调搜索)在0.5秒后触发,然后如果在计时器触发前出现新的搜索词,则使其无效并重新安排。
如果在0.5内没有新的搜索,则会启动计时器并进行搜索。