Обтягивающее слово текстовое поле с фоновым изображением на iPhone?
-
06-07-2019 - |
Вопрос
Кто-нибудь знает, как создать текстовое поле с фоном UIImage и переносом слов?
Похоже, что перенос слов не доступен в UITextField, а фоновое изображение недоступно для UITextView! Кроме того, он должен изменить размер элемента управления или, по крайней мере, предупредить, что количество строк изменилось, чтобы делегат мог изменить его размер.
Примером такого управления является поле ввода сообщений в приложении SMS.
Изменить : в коде также должно быть текстовое поле, чтобы всегда отображать редактируемый текст. По-видимому, когда UITextView изменяет размер во время редактирования, он каким-то образом теряет фокус на текущий текст.
Спасибо, вперед! Aviad.
Решение
Перенос слов недоступен в UITextField, поскольку UITextField поддерживает только однострочный текст.
Используйте UITextView. Сделайте textView.backgroundColor = [UIColor clearColor]. Сначала добавьте UIImage, а затем UITextView поверх него. Убедитесь, что размеры указаны правильно, и с вами все будет в порядке.
Что касается изменения размера UITextView, в вашем UITextViewDelegate сделайте что-то вроде этого:
- (void)textViewDidChange:(UITextView *)textView
{
NSString *s = textView.text;
CGSize testSize = CGSizeMake(textView.frame.size.width, NSIntegerMax);
CGSize neededSize = [s sizeWithFont: textView.font constrainedToSize: testSize lineBreakMode: UILineBreakModeWordWrap]; // or UILineBreakModeCharacterWrap?
if (neededSize.height > testSize.height)
{
// grow textView
textView.frame = CGRectMake(textView.frame.origin.x, textView.frame.origin.y, neededSize.width, neededSize.height);
// then adjust the image size -- something like this
imageView.frame = textView.frame
}
}
Другие советы
В конце концов я написал свой собственный код, который работал до некоторой степени с большим количеством обходных путей (например, изменение фокуса, изменение размера при повторном удалении всего текста и т. д.). Если кому-то интересно, я выложу код.
В других новостях только сегодня я увидел в другом вопросе нечто, называемое <код> IFVerticallyExpandingTextField код> . Название было многообещающим, код здесь, и я посмотрю. Любой, у кого похожая проблема, возможно, вы захотите это увидеть.
Моя ошибка, я недостаточно внимательно ее прочитал: IFVerticallyExpandingTextField
предназначен для Mac, а не для iPhone.