Поле ввода текста, как приложение SMS на iPhone

У меня ужасное время, пытаясь получить поле ввода, как в приложении SMS.

может ли кто - нибудь предложить некоторые рекомендации о том, как построить один из них и сделать его хорошим? Мне нужно поле ввода, которое имеет форму красиво, как UITextfield, но будет растягиваться вертикально при вводе.

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

обновление:

Я работал над этим каждый день в течение недели, и я почти отказался от UITextView. Я могу заставить его правильно растягиваться, но при обратном развертывании высота Textview слишком сильно сжимается при движении вверх по строке. По мере того, как я продолжаю разворачивать его, он исправляется. Например, он отображает это поведение, когда я нахожусь в строке 4 и backspace до строки 3. Затем, когда я продолжаю backspacing, он исправляется, пока я не доберусь до конце линии 2. Затем он исправляется.... так далее.

Я решил попробовать подкласс UITextField, но я даже не могу заставить его отображаться в размере кадра, который я указываю. 150,150,150,150.

4 ответов


Three20 project имеет элемент управления, который должен сделать это за вас.

из Three20 README:

TTTextEditor-это UITextView, который может расти в высоту автоматически, как вы тип. Я использую это для ввода сообщений в Facebook чат, и он ведет себя аналогично редактору в SMS от Apple приложение.


попробовать Пример Ввода Чата. Он имеет аналогичный внешний вид и функциональность SMS приложение.


вы должны сделать это сами. К счастью,UITextField может уведомлять вас, когда его текст изменяется, и к счастью NSString имеет методы (под добавлениями UIKit), которые позволяют вам получить высоту строки, учитывая определенную ширину, и к счастью вы можете изменить размер UITextField сами.


Я знаю, что это старый, но для людей, которые все еще смотрят на этот ответ есть хороший контроль со слабиной, что это называется SlackTextViewController.