Как твиттер реализовал новую функцию автозаполнения в приложении для iPhone? - PullRequest
1 голос
/ 05 апреля 2011

В Twitter появился новый замечательный способ ввода «@» и «#» в последнем приложении для iPhone.

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

Когда вы набираете «#» или «@» изатем введите символы, которые мгновенно начнут автозаполнение в таблице ниже.Как они это делают?Он кажется родным, но так ли это?

Если он родной, как они это сделали?UITextView с активным UITableView?Это действительно быстро и плавно, поэтому я предполагаю, что они загружают телефон с трендовыми # и вашими @, и это быстро, потому что данные локальные (это просто ввод, если их там нет).

Но мне интересно, был ли способ добиться этого эффекта с помощью данных, удаленных на веб-сервере с помощью асинхронных вызовов.

Есть какие-нибудь мысли о том, как это сделать / начать?

1 Ответ

1 голос
/ 05 апреля 2011

Если под «нативным» вы подразумеваете «встроить в SDK», то я должен вас разочаровать, это не встроенная функция SDK (что-то похожее с классами UISearchController / UISearchBar, но это не то, чем является Twitterлевередж).

Это, однако, не означает, что вы не можете построить его самостоятельно.Я верю, что это будет довольно просто.Все, что вам нужно сделать, это отслеживать каждый раз, когда пользователь вводит текст в UITextView (это легко сделать с помощью методов делегата UITextView).Вы делаете проверку всего текста, и если пользователь вводит «@» или «#», или любой другой символ, за которым вы хотите наблюдать, вы создаете / отображаете UITableView под текстовым представлением (или там, где вы этого хотите.).

Что касается источника данных табличного представления, он должен основываться на информации, которую вы собираете при поиске.Когда Твиттер показывает вам список популярных тэгов и т. Д., Я думаю, это то, что они удаляли, когда вы синхронизировали ваш канал, а затем куда-то кэшировались.Если бы вы использовали веб-сервер, вы могли бы сделать то же самое.Когда пользователь начинает вводить определенный текст, вы можете выполнить поиск на сервере.Если вы выполняете сетевые запросы асинхронно, вы можете отображать UIActivityIndicator в табличном представлении, пока не получите ответ от сервера.Если пользователь вводит больше текста до того, как сервер «ответит» вам, просто отмените старый запрос к серверу и запустите новый.

Я сам не реализовал нечто подобное и не знаюо том, как это будет работать в реальной жизни, но если бы я должен был реализовать нечто подобное на макушке моей головы, это был бы подход, который я бы преследовал.Возможно, это не совсем подходит для вашего случая, но, надеюсь, это даст вам некоторое вдохновение:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...