twitter如何在iPhone应用程序中实现新的自动补全功能?



Twitter在最新的iPhone应用程序中有一种很棒的新方式来输入"@"one_answers"#"。

http://blog.twitter.com/2011/03/twitter-for-iphone-ipad-even-better.html

当您键入"#"或"@",然后键入字符时,它立即开始在下面的表格中自动完成。他们是怎么做到的?感觉很自然,但真的是吗?

如果是原生的,他们是怎么做到的?UITextView与活动的UITableView?它真的又快又流畅,所以我猜他们给手机加载了趋势#和你的@,它很快,因为数据是本地的(如果不存在,它只会输入)。

但是我想知道是否有一种方法可以在使用异步调用的web服务器上远程实现这种影响。

有什么想法吗?

如果你说的"原生"是指内置到SDK中,那么我不得不让你失望了,这不是一个内置的SDK功能(有一些类似于UISearchController/UISearchBar类,但这不是Twitter利用的)。

然而,这并不意味着你不能自己构建它。我相信这很简单。你所要做的就是监控每次用户输入文本到UITextView(这可以很容易地使用UITextView委托方法来完成)。你检查所有的文本,如果用户输入一个'@'或'#',或任何其他你想要观察的符号,你创建/显示一个UITableView在文本视图(或任何你想要它)。

至于表视图的数据源,它必须基于您通过搜索收集的信息。当Twitter向你展示一个趋势标签列表时,等等。我认为这是他们在你同步feed时拉下的东西,然后缓存在某个地方。如果你使用的是web服务器,你也可以这样做。当用户开始输入特定文本时,您可以在服务器上进行搜索。如果你异步地做网络请求,你可以在表视图中显示一个UIActivityIndicator,直到你从服务器得到一个响应。如果用户在服务器"回复"你之前输入了更多的文本,只需取消旧的服务器请求,并开始一个新的。

我自己没有实现过这样的东西,我也不知道它在现实生活中的表现如何,但如果我要实现类似的东西,这将是我所追求的方法。它可能不完全适合你的情况,但希望它能给你一些灵感:)

最新更新