我已经实现了一个添加了searchBar的tableView。当用户开始在搜索栏中输入搜索关键字时,我想调用服务。我知道我可以在将调用服务的change事件侦听器中调用该服务。
我知道,对于搜索栏中的每一个更改,调用服务都是不好的。那么,当搜索结果来自服务调用时,使用搜索栏的有效方法是什么,或者我们可以做些什么来提高搜索效率。
例如:苹果应用商店上的搜索功能
发布于 2012-10-18 01:46:43
我为我的一个测试项目做了类似的事情。我会检查我的更改事件,在我尝试查找之前,至少输入了3个字符。我不知道为什么我选择了3,但它看起来像是一个相当多的字符来过滤我的数据。我还会设置一个标志,表明网络请求正在进行中。因此,如果他们输入了3个字符,如果没有正在进行的查找,则可以开始搜索。如果有一个网络请求正在进行中,您可以设置一个等待间隔,以不断检查请求是否返回,并在返回时启动另一个请求。我会发回简短的项目列表,对我来说是25个,这样我的表格就会显示得很快。
虽然我没有这样做,但您可以跟踪输入字符之间的时间间隔,以确保用户已完成输入。对于最佳间隔,您需要试验对于普通用户来说什么是合理的。从典型的非高级用户那里获得一些关于这个的反馈。
我可以看到一个潜在的问题,您正在查找,但用户仍在键入。您可能需要跟踪这些字符更新,并可能开始对更新后的字符串进行额外的搜索。您甚至可以用输入框中的当前字符检查您当时发送的字符搜索字符串,并选择放弃已经收到的查找项列表,而只是执行另一次搜索。
您可能希望显示您收到的项目列表,以便用户知道应用程序正在工作,但立即发送另一个自动查找项目的请求。用户最终可能会开始敲击键盘,如果你不在表格中偶尔显示一些东西,用户可能会认为应用程序没有响应。
https://stackoverflow.com/questions/12935167
复制相似问题