Поле ввода текста, как приложение 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.