2011-04-05 71 views
1

Twitter有一個很棒的新方法來在最新的iPhone應用程序中輸入「@」和「#」。Twitter如何在iPhone應用程序中實現新的自動完成功能?

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

當你輸入「#」或「@」,然後鍵入它立即開始在下面的表格自動完成字符。他們如何做到這一點?它感覺自然,但是它?

如果它是原生的,他們是如何做到的? UITextView與一個活動的UITableView?它非常快速且流暢,所以我猜測他們會用趨勢#和你的@來加載手機,而且速度很快,因爲數據是本地數據(如果不在那裏,只需輸入數據)。

但我想知道是否有一種方法來實現這種影響與數據是遠程Web服務器使用異步調用。

有關如何做到這一點的任何想法/開始?

回答

1

如果你的意思是'本地',建立到SDK中,那麼我不得不讓你失望,這不是一個內置的SDK功能(類似於UISearchController/UISearchBar類,但這不是什麼Twitter正在利用)。

但是,這並不意味着你不能自己構建它。我相信這會很簡單。所有你需要做的就是監視每次用戶輸入文本到UITextView中(這可以很容易地使用UITextView委託方法完成)。您對所有文本進行檢查,並且如果用戶輸入了「@」或「#」或任何其他您想要查看的符號,則可以在文本視圖下方(或任何您想要的位置)創建/顯示UITableView )。

至於表視圖的數據源,它必須基於您通過搜索收集的信息。當Twitter向您顯示趨勢標籤等列表時,我認爲這是他們在您同步Feed時被拉下來的東西,然後在某處緩存。如果您使用的是Web服務器,則可以這樣做。當用戶開始輸入特定文本時,您可以在服務器上進行搜索。如果您異步執行網絡請求,則可以在表視圖中顯示UIActivityIndi​​cator,直到獲得服務器的響應。如果用戶在服務器向您「回覆」之前輸入更多文本,只需取消舊的服務器請求,然後啓動一個新的服務器。

我自己並沒有實現這樣的事情,我也不知道它在現實生活中的表現,但如果我要實現類似於我的頭頂上的事情,這將是我的問題會追求。它可能不適合你的情況,但希望它會給你一些靈感:)

+0

謝謝!這看起來像是一個功能,它可以很好地擁有一個three20風格的庫。從Web服務器異步自動完成到可用視圖將非常方便。再次感謝您的回答。 – 2011-04-05 20:33:19

+0

我正在吃我自己的無知的話。看起來像three20實際上做這樣的事情.. http://joehewitt.com/post/the-three20-project/ – 2011-04-05 20:34:48

+0

有趣的你在Three20中找到它,似乎解決了你的問題的UI部分:) – 2011-04-06 13:56:22

相關問題