iPhone; uisearchbar 异步请求,在发送新请求之前取消
大家好 我希望在我的应用程序中有一个搜索栏,用户可以在其中搜索城市和国家 - 结果来自在线 API。
因此,当用户开始输入四个以上字符时,系统会向在线 API 发送搜索请求,并获取国家/地区、城市信息。这里的问题是;当用户键入时,会进行呼叫,但在此之前的任何呼叫尚未结束 - 导致应用程序感觉缓慢...
重申
- 用户类型,让我们说“唱歌”
- 发送请求,并且所有城市 但即使在检索
- 列表之前,用户仍继续键入“Singa”。
- 应用程序会等待第一个请求中尚未处理的结果,甚至有时结果是一些垃圾。
我希望你们明白我的意思,我只需要取消任何待处理的请求并发送一个新的请求。我怎样才能做到这一点?
一种方法是仅在用户单击“搜索”时检索列表 - 但我希望它更具交互性。
谢谢
Hi there guys
I am looking to have a search bar in my application,where the user searches for cities and countries - the results come from an online API.
So, when the user starts to type more than four characters, a search request is sent to the online API and country,city information is fetched. The problem here is; as the user is typing the calls are made, but any call before that has not ended yet - causing the application to feel sluggish...
To reiterate
- The user types, lets' say "Sing"
- A request is sent, and all the cities with Sing in it are retrieved
- But even before the list is retrieved, the user continues typing "Singa"
- The application kind of waits for the results that yet pending from the first request and even at times, the results are some garbage.
I hope you guys understand what i meant, i just need to cancel any pending requests and send a new one. How can i achieve this?
One way is to retrieve the list only when the user clicks "search" - but i would like it to be more interactive.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我在这个问题上取得了一些积极的进展......
正如 rog 提到的,使用 NSURLCOnnection 在发送新请求之前实现了取消。我的代码如下,
这对我来说效果很好 - 示例控制台输出是
如果您注意到当我在搜索栏中输入字符时请求被取消。
i had some positive progress with the issue...
using NSURLCOnnection, as rog mentioned, implemented a cancel before sending a new request. My code is as follows
That worked pretty good for me - a sample console output is
If you notice the request got cancelled as i inputted characters into the searchbar.
棘手的一个!假设您正在使用 NSURLConnection,一旦检测到输入了新字符,请向其发送取消消息 [urlConnection cancel];在启动新的之前?
Tricky one! Assuming you're using NSURLConnection, once you detect a new character has been entered, send it a cancel message [urlConnection cancel]; before firing up the new one?