Мне ужасно трудно пытаться получить поле ввода как то в приложении SMS.
Кто-либо может предложить некоторое руководство о том, как создать один из них и заставить его выглядеть хорошим? Мне нужно поле ввода, которое формируется приятно как UITextfield, но будет простираться вертикально при вводе.
Я предполагаю, что должен вычислить ширину текста и расширить фрейм изображения наложения вертикально когда текстовые переходы на новую строку. Самое близкое я приехал, действительно простирается, но курсор возвращает все вокруг при приближении к границам.
ОБНОВЛЕНИЕ:
Я работал над этим каждый день в течение недели, и у меня есть о разочарованном UITextView. Я могу заставить это простираться правильно, но при возвращении, высота Textview уменьшается слишком много при восстановлении работоспособности строки. В то время как я продолжаю возвращаться, это исправляет себя. Например, это отображает это поведение, когда я нахожусь на строке 4 и клавиша Backspace до строки 3. Затем в то время как я продолжаю возвращаться, это исправляет, пока я не добираюсь в конец строки 2. Затем это исправляет себя.... и т.д.
Я решил попытаться разделить UITextField на подклассы, но я не могу даже заставить его отображаться в Формате кадра, который я указываю. 150,150,150,150.
В проекте Three20 есть элемент управления, который должен делать это за вас.
Из README Three20:
TTTextEditor - это UITextView, который может автоматически увеличиваться в высоту по мере того, как вы набираете текст. Я использую его для ввода сообщений в чате Facebook, и он ведет себя аналогично редактору в приложении Apple SMS .
Вы можете сделать это сами. К счастью, UITextField
может уведомлять вас всякий раз, когда его текст изменяется, используя UITextFieldTextDidChangeNotification
, и, к счастью, NSString
имеет методы (в рамках дополнений UIKit), которые позволяют вам получить высота строки задана определенной шириной, используя boundingRectWithSize: options: attributes: context:
, и, к счастью, вы можете изменить размер UITextField
самостоятельно, используя фрейм
.