как создать многострочное uitextfield?

<p>я разрабатываю приложение, в котором пользователь должен написать некоторую информацию. для этого мне нужно <code>uitextfield</code>, который является многострочным (в общем случае <code>uitextfield</code> - это одна строка).</p><p>поскольку я в google, я нахожу ответ, используя для этой цели <code>uitextview</code> вместо <code>uitextfield</code>.</p>

<p><code>uitextfield</code> определенно только одна строка.</p><p>ваш поиск в google правильный, вам нужно использовать <code>uitextview</code> вместо <code>uitextfield</code> для отображения и редактирования многострочного текста.</p><p>в интерфейсном разработчике добавьте <code>uitextview</code>, где вы хотите, и установите флажок "редактируемый". по умолчанию будет многострочным.</p>

<p>хорошо, я сделал это с помощью некоторого трюка;) сначала создайте <code>uitextfield</code> и увеличьте его <code>size</code> следующим образом:</p><pre><code>cgrect framerect = textfield.frame; framerect.size.height = 53; textfield.frame = framerect; </code></pre><p>затем создайте <code>uitextview</code> точно в той же области, в которой вы создали мое <code>uitextfield</code>, и удалили его <code>background color</code>. теперь похоже, что у вас есть несколько строк <code>textfield</code>!</p>

<p>вы можете подделать uitextfield, используя uitextview. проблема, с которой вы столкнетесь, заключается в том, что вы потеряете функциональность заполнителя.</p><p><strong>если вы решили использовать uitextview и вам нужен заполнитель, сделайте это:</strong></p><p>в вашем viewdidload установите цвет и текст для заполнителей:</p><pre><code>mytxtview.textcolor = .lightgray mytxtview.text = "type your thoughts here..." </code></pre><p>затем заставьте заполнитель исчезнуть, когда выбран ваш uitextview:</p><pre><code>func textviewdidbeginediting (textview: uitextview) { if mytxtview.textcolor.textcolor == ph\_textcolor && mytxtview.isfirstresponder() { mytxtview.text = nil mytxtview.textcolor = .white } } </code></pre><p>когда пользователь закончит редактирование, убедитесь, что есть значение. если нет, добавьте заполнитель снова:</p><pre><code>func textviewdidendediting (textview: uitextview) { if mytxtview.text.isempty || mytxtview.text == "" { mytxtview.textcolor = .lightgray mytxtview.text = "type your thoughts here..." } } </code></pre><p><strong>другие функции, которые вам, возможно, понадобится подделать:</strong></p><p>uitextfield часто использует заглавные буквы для каждой буквы, вы можете добавить эту функцию в uitableview:</p><pre><code>mytxtview.autocapitalizationtype = .words </code></pre><p>uitextfield обычно не прокручивается:</p><pre><code>mytxtview.scrollenabled = false </code></pre>

<p>помимо многострочного поведения, основное различие между uitextview и uitextfield заключается в том, что uitextview не предлагает заполнитель. чтобы обойти это ограничение, вы можете использовать uitextview с "фальшивым заполнителем".</p><p>подробности смотрите в этом вопросе so: <a href="https://stackoverflow.com/questions/1328638/placeholder-in-uitextview">заполнитель в uitextview</a> .</p>

<p>если у вас должен быть uitextfield с 2 строками текста, один из вариантов - добавить uilabel в качестве подпредставления uitextfield для второй строки текста. в моем приложении есть uitextfield, который пользователи часто не понимают, можно ли редактировать нажатием, и я хотел добавить небольшой текст субтитров с надписью "tap to edit" в uitextfield.</p><pre><code>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]; </code></pre>

<p>да, uitextview - это то, что вы ищете. вам придется иметь дело с некоторыми вещами по-разному (например, клавишей возврата), но вы можете добавить к нему текст, и он позволит вам прокручивать вверх и вниз, если внутри слишком много текста.</p><p>эта ссылка содержит информацию о создании экрана для ввода данных:</p><p> <a href="http://iphoneincubator.com/blog/windows-views/how-to-create-a-data-entry-screen">создать экран ввода данных</a> </p>

<p>использовать uitextview вместо uitextfield</p>

<p>в дополнение к ответу h4xxr выше, более простой способ отрегулировать высоту uitextfield - выбрать стиль квадратной границы в атрибуте inspectors-> text field. (по умолчанию стиль рамки поля uitext - эллипс.)</p><p>ссылка: ответил брайан здесь: <a href="https://stackoverflow.com/questions/8641557/how-set-uitextfield-height">как установить высоту uitextfield?</a> </p>