Я разрабатываю приложение, в котором пользователь должен написать некоторую информацию. Для этого мне необходимо многострочное поле UITextField
(в общем случае UITextField
является однострочным).
Погуглив, я нашел ответ об использовании UITextView
вместо UITextfield
для этой цели.
UITextField
имеет только однострочный характер.
Ваш поиск в Google верен, для отображения и редактирования многострочного текста необходимо использовать UITextView
, а не UITextField
.
В Interface Builder добавьте UITextView
в нужное место и установите флажок "editable". По умолчанию он будет многострочным.
Ок, я сделал это с какой-то трюк ;) сначала построить поле UITextField и увеличил его'размер S,``, как это :
CGRect frameRect = textField.frame;
frameRect.size.height = 53;
textField.frame = frameRect;
Затем построить UITextView
точно в том же районе, что U сделал мой объект UITextField, и удалил его
цвет фона`. Теперь, похоже, что у вас есть текстовое поле в несколько строк``!
Вы можете поддельные с UITextField с помощью UITextView. Проблема, которую вы'будете иметь, что вы потеряете место функциональность.
Если вы решите использовать UITextView и нужен заполнитель, сделайте следующее:
В метод viewDidLoad задать цвет и текст заполнителей:
myTxtView.textColor = .lightGray
myTxtView.text = "Type your thoughts here..."
Затем сделать заполнителя исчезнет, когда ваш UITextView выбран:
func textViewDidBeginEditing (textView: UITextView) {
if myTxtView.textColor.textColor == ph_TextColor && myTxtView.isFirstResponder() {
myTxtView.text = nil
myTxtView.textColor = .white
}
}
Когда пользователь закончит редактирование, обеспечить там'ы значение. Если нет'т добавить заполнитель:
func textViewDidEndEditing (textView: UITextView) {
if myTxtView.text.isEmpty || myTxtView.text == "" {
myTxtView.textColor = .lightGray
myTxtView.text = "Type your thoughts here..."
}
}
Другие функции, которые могут пригодиться для фальшивки:
Поле UITextField'ы часто использовать каждую букву, вы можете добавить эту функцию в UITableView:
myTxtView.autocapitalizationType = .words
Поле UITextField'ы не'т, как правило, свиток:
myTxtView.scrollEnabled = false
Помимо многострочного поведения, основным отличием UITextView от UITextField является то, что UITextView не предлагает заполнителя. Чтобы обойти это ограничение, можно использовать UITextView с "поддельным плацдармом";
Подробнее см. в этом вопросе SO: Placeholder in UITextView.
Да, UITextView - это то, что вы ищете. Вам придется работать с некоторыми вещами по-другому (например, с клавишей возврата), но вы можете добавлять в него текст, и он позволит вам прокручивать его вверх и вниз, если текста слишком много.
По этой ссылке можно найти информацию о создании экрана для ввода данных:
Если вы должны иметь с UITextField с 2 строками текста, можно добавить UILabel ни как подпанели из UITextField для второй строки текста. У меня с UITextField в моей приложение, которое пользователи часто не понимают, редактирования, нажав, и я хочу добавить несколько небольших текстовых субтитров, который пишет "Нажмите, чтобы редактировать" на поле UITextField.
CGFloat tapLlblHeight = 10;
UILabel *tapEditLbl = [[UILabel alloc] initWithFrame:CGRectMake(20, textField.frame.size.height - tapLlblHeight - 2, 70, tapLlblHeight)];
tapEditLbl.backgroundColor = [UIColor clearColor];
tapEditLbl.textColor = [UIColor whiteColor];
tapEditLbl.text = @"Tap to Edit";
[textField addSubview:tapEditLbl];
использовать UITextView Вместо для UITextField
В дополнение к h4xxr'ы ответьте в выше, простой способ отрегулировать высоту UITextField будет выбрать тип границы в инспекторы-&атрибута gt;текст поле. (По умолчанию стиль границы с UITextField является эллипс.)
Ссылка: ответил Брайан здесь : https://stackoverflow.com/questions/8641557/how-set-uitextfield-height
Есть еще один вариант, который работал для меня:
Подкласс поле UITextField и заменить:
- (void)drawTextInRect:(CGRect)rect
В этот способ вы можете например:
NSDictionary *attributes = @{ NSFontAttributeName : self.font,
NSForegroundColorAttributeName : self.textColor };
[self.text drawInRect:verticalAlignedRect withAttributes:attributes];
Этот код будет отображать текст, используя столько строк, сколько требуется, если прямоугольник имеет достаточно места. Вы можете указать любой другой атрибут в зависимости от ваших потребностей.
Не используйте:
self.defaultTextAttributes
которая заставит текст одной строкой перевода