我已经实现了一个添加了searchBar的tableView。我想在用户开始在搜索栏中输入搜索关键字时调用服务。我知道我可以调用将调用该服务的change
事件监听器中的服务。
我知道,对于搜索栏中的每次更改,都不宜调用服务。那么,当搜索结果来自服务呼叫时,使用搜索栏的有效方法是什么,或者我们可以采取哪些措施来提高搜索效率。
例如:Apple App Store上的搜索功能
答案 0 :(得分:0)
我为我的一个测试项目做了类似的事情。我会检查我的更改事件,在我尝试查找之前至少输入了3个字符。我不知道为什么我选择3,但它似乎是一个相当数量的字符来过滤我的数据。我还会设置一个网络请求正在进行的标志。因此,如果他们输入了3个字符,如果没有正在进行查找,您可以启动搜索。如果有正在进行的网络请求,您可以设置一个等待间隔,以便继续检查请求是否返回并在启动时启动其他请求。我会寄回短项目清单,这对我来说只有25个,所以我的桌子出现得很快。
虽然我没有这样做,但您可以跟踪键入的字符之间的时间间隔,以确保用户输入完成。要获得最佳间隔,您需要尝试对普通用户合理的内容。从此获得一些非高级用户的反馈。
我可以看到您正在查找的潜在问题,但用户仍在键入。您可能需要跟踪这些字符更新,并可能启动对更新后的字符串的其他搜索。您甚至可以使用输入框中的当前字符检查您当时发送的字符搜索字符串,并选择放弃已收到的查找项列表,然后再进行其他搜索。
您可能希望显示您收到的项目列表,以便用户知道应用程序正在运行,但会立即自动发送另一个查找项目请求。如果您偶尔不在表格中显示某些内容,用户最终可能会开始敲击密钥并认为应用程序没有响应。