Spec-Zone.ru › React Native

TextInput

Базовый компонент для ввода текста в приложение с помощью клавиатуры. Свойства позволяют настроить различные функции, такие как автоисправление, автозаглавие, текст подсказки и различные типы клавиатур, например, числовая клавиатура.

Наиболее простой сценарий использования — размещение TextInput и подписка на события onChangeText для чтения пользовательского ввода. Также доступны другие события, такие как onSubmitEditing и onFocus, на которые можно подписаться. Пример минимального использования:

Два метода, доступные через собственный элемент, — .focus() и .blur(), которые позволяют программно установить или снять фокус с TextInput.

Обратите внимание, что некоторые свойства доступны только с multiline={true/false}. Кроме того, стили границы, которые применяются только к одной стороне элемента (например, borderBottomColor, borderLeftWidth, и т. д.), не будут применяться, если multiline=true. Чтобы добиться такого же эффекта, можно обернуть свой TextInput в View.

TextInput по умолчанию имеет границу в нижней части своего представления. Отступ этой границы определяется фоновым изображением, предоставляемым системой, и его нельзя изменить. Решения для избежания этого заключаются в том, чтобы либо не устанавливать высоту явно, в этом случае система позаботится о правильном отображении границы, либо не отображать границу, установив underlineColorAndroid в прозрачный цвет.

Обратите внимание, что на Android при выделении текста в поле ввода параметр активности приложения windowSoftInputMode может измениться на adjustResize. Это может привести к проблемам с компонентами, у которых свойство position: 'absolute', когда активна клавиатура. Чтобы избежать этого поведения, укажите windowSoftInputMode в файле AndroidManifest.xml ( https://developer.android.com/guide/topics/manifest/activity-element.html) или управляйте этим параметром программно с помощью кода нативных языках.

Справочник

Свойства

Свойства View

Наследует Свойства View.

allowFontScaling

Указывает, следует ли масштабировать шрифты с учетом настроек доступности размера текста. По умолчанию значение true.

Тип
bool

autoCapitalize

Указывает TextInput на автоматическое приведение определенных символов к верхнему регистру. Это свойство не поддерживается некоторыми типами клавиатур, такими как name-phone-pad.

  • characters: все символы.
  • words: первая буква каждого слова.
  • sentences: первая буква каждого предложения (по умолчанию).
  • none: не производить автоматическое приведение к верхнему регистру.
Тип
enum('none', 'sentences', 'words', 'characters')

autoComplete
Android

Указывает подсказки автозаполнения для системы, чтобы она могла предложить автозаполнение. На Android система всегда пытается предложить автозаполнение, используя эвристику для определения типа содержимого. Чтобы отключить автозаполнение, установите autoComplete в off.

Возможные значения для autoComplete:

  • birthdate-day
  • birthdate-full
  • birthdate-month
  • birthdate-year
  • cc-csc
  • cc-exp
  • cc-exp-day
  • cc-exp-month
  • cc-exp-year
  • cc-number
  • email
  • gender
  • name
  • name-family
  • name-given
  • name-middle
  • name-middle-initial
  • name-prefix
  • name-suffix
  • password
  • password-new
  • postal-address
  • postal-address-country
  • postal-address-extended
  • postal-address-extended-postal-code
  • postal-address-locality
  • postal-address-region
  • postal-code
  • street-address
  • sms-otp
  • tel
  • tel-country-code
  • tel-national
  • tel-device
  • username
  • username-new
  • off
Тип
enum('birthdate-day', 'birthdate-full', 'birthdate-month', 'birthdate-year', 'cc-csc', 'cc-exp', 'cc-exp-day', 'cc-exp-month', 'cc-exp-year', 'cc-number', 'email', 'gender', 'name', 'name-family', 'name-given', 'name-middle', 'name-middle-initial', 'name-prefix', 'name-suffix', 'password', 'password-new', 'postal-address', 'postal-address-country', 'postal-address-extended', 'postal-address-extended-postal-code', 'postal-address-locality', 'postal-address-region', 'postal-code', 'street-address', 'sms-otp', 'tel', 'tel-country-code', 'tel-national', 'tel-device', 'username', 'username-new', 'off')

autoCorrect

Если false, отключает автоисправление. Значение по умолчанию true.

Тип
bool

autoFocus

Если true, устанавливает фокус на поле ввода при componentDidMount или useEffect . Значение по умолчанию false.

Тип
bool

blurOnSubmit

Если true, поле ввода будет снимать фокус при отправке. Значение по умолчанию — true для однострочных полей и false для многострочных полей. Обратите внимание, что для многострочных полей, установка blurOnSubmit в true означает, что нажатие клавиши ввода будет снимать фокус с поля и вызывать событие onSubmitEditing вместо вставки новой строки в поле.

Тип
bool

caretHidden

Если true, курсор скрыт. Значение по умолчанию false.

Тип
bool

clearButtonMode
iOS

Когда должна отображаться кнопка очистки в правой части поля ввода. Это свойство поддерживается только для компонента TextInput с одной строкой. Значение по умолчанию never.

Тип
enum('never', 'while-editing', 'unless-editing', 'always')

clearTextOnFocus
iOS

Если true, поле ввода автоматически очищается при начале редактирования.

Тип
bool

contextMenuHidden

Если true, контекстное меню скрыто. Значение по умолчанию false.

Тип
bool

dataDetectorTypes
iOS

Определяет типы данных, преобразуемых в нажатия по URL в поле ввода. Действительно только если multiline={true} и editable={false}. По умолчанию типы данных не обнаруживаются.

Можно указать один тип или массив из нескольких типов.

Возможные значения для dataDetectorTypes:

  • 'phoneNumber'
  • 'link'
  • 'address'
  • 'calendarEvent'
  • 'none'
  • 'all'
Тип
enum('phoneNumber', 'link', 'address', 'calendarEvent', 'none', 'all'), ,array of enum('phoneNumber', 'link', 'address', 'calendarEvent', 'none', 'all')

defaultValue

Предоставляет начальное значение, которое изменяется при вводе пользователем. Полезно в тех случаях, когда вы не хотите обрабатывать прослушивание событий и обновление свойства value для сохранения состояния управления в синхронизации.

Тип
string

disableFullscreenUI
Android

Когда false, если доступно мало места вокруг поля ввода (например, в альбомной ориентации на телефоне), ОС может предложить пользователю редактировать текст в режиме полноэкранного поля ввода. Когда true, эта функция отключена, и пользователи всегда будут редактировать текст непосредственно в поле ввода. По умолчанию false.

Тип
bool

editable

Если false, текст не редактируется. Значение по умолчанию true.

Тип
bool

enablesReturnKeyAutomatically
iOS

Если true, клавиатура отключает клавишу возврата, когда нет текста, и автоматически включает ее, когда текст есть. Значение по умолчанию false.

Тип
bool

importantForAutofill
Android

Указывает операционной системе, следует ли включать отдельные поля в структуру отображения для целей автозаполнения на Android API Level 26+. Возможные значения: auto, no, noExcludeDescendants, yes, и yesExcludeDescendants. Значение по умолчанию auto.

  • auto: Позволяет системе Android использовать свои эвристики для определения, важно ли это представление для автозаполнения.
  • no: Это представление не важно для автозаполнения.
  • noExcludeDescendants: Это представление и его дочерние элементы не важны для автозаполнения.
  • yes: Это представление важно для автозаполнения.
  • yesExcludeDescendants: Это представление важно для автозаполнения, но его дочерние элементы не важны для автозаполнения.
Тип
enum('auto', 'no', 'noExcludeDescendants', 'yes', 'yesExcludeDescendants')

inlineImageLeft
Android

Если определено, предоставленное изображение ресурса будет отображаться слева. Ресурс изображения должен быть внутри /android/app/src/main/res/drawable и ссылаться так

<TextInput
 inlineImageLeft='search_icon'
/>
Тип
string

inlineImagePadding
Android

Отступ между встроенным изображением (если есть) и самим текстовым полем.

Тип
число

inputAccessoryViewID
iOS

Необязательный идентификатор, который связывает пользовательский InputAccessoryView с этим текстовым полем. InputAccessoryView отображается над клавиатурой, когда это текстовое поле находится в фокусе.

Тип
строка

keyboardAppearance
iOS

Определяет цвет клавиатуры.

Тип
перечисление ('default', 'light', 'dark')

keyboardType

Определяет, какая клавиатура должна открыться, например, numeric.

См. скриншоты всех типов здесь.

Следующие значения работают на всех платформах:

  • default
  • number-pad
  • decimal-pad
  • numeric
  • email-address
  • phone-pad
  • url

Только для iOS

Следующие значения работают только на iOS:

  • ascii-capable
  • numbers-and-punctuation
  • name-phone-pad
  • twitter
  • web-search

Только для Android

Следующие значения работают только на Android:

  • visible-password
Тип
перечисление ('default', 'email-address', 'numeric', 'phone-pad', 'ascii-capable', 'numbers-and-punctuation', 'url', 'number-pad', 'name-phone-pad', 'decimal-pad', 'twitter', 'web-search', 'visible-password')

maxFontSizeMultiplier

Устанавливает максимальный возможный масштаб шрифта, когда allowFontScaling включен. Возможные значения:

  • null/undefined (по умолчанию): наследуется от родительского узла или от глобального значения по умолчанию (0)
  • 0: нет ограничения, игнорируется родительский/глобальный параметр по умолчанию
  • >= 1: устанавливает maxFontSizeMultiplier этого узла в это значение
Тип
число

maxLength

Ограничивает максимальное количество символов, которые можно ввести. Используйте это вместо реализации логики в JS, чтобы избежать мерцания.

Тип
число

multiline

Если true, текстовое поле может содержать несколько строк. Значение по умолчанию - false.

Примечание:

Важно отметить, что это выравнивает текст по верху на iOS и по центру на Android. Используйте с textAlignVertical , установленным на top, для одинакового поведения на обеих платформах.

Тип
логическое значение

numberOfLines
Android

Устанавливает количество строк для TextInput. Используйте его с multiline, установленным на true, чтобы заполнить строки.

Тип
число

onBlur

Обработчик, вызываемый, когда текстовое поле теряет фокус.

Примечание: Если вы пытаетесь получить доступ к значению text из nativeEvent, помните, что полученное значение может быть undefined, что может привести к непредвиденным ошибкам. Если вы пытаетесь найти последнее значение TextInput, используйте событие onEndEditing, которое срабатывает по завершении редактирования.

Тип
функция

onChange

Обработчик, вызываемый при изменении текста в текстовом поле.

Тип
({ nativeEvent: { eventCount, target, text} }) => void

onChangeText

Обработчик, вызываемый при изменении текста в текстовом поле. Измененный текст передается как единственный строковый аргумент в обработчик.

Тип
функция

onContentSizeChange

Обработчик, вызываемый при изменении размера содержимого текстового поля.

Вызывается только для многострочных текстовых полей.

Тип
({ nativeEvent: { contentSize: { width, height } } }) => void

onEndEditing

Обработчик, вызываемый при завершении редактирования текстового поля.

Тип
функция

onPressIn

Обработчик, вызываемый при нажатии.

Тип
({ nativeEvent: PressEvent }) => void

onPressOut

Обработчик, вызываемый при отпускании.

Тип
({ nativeEvent: PressEvent }) => void

onFocus

Обработчик, вызываемый при получении фокуса текстовым полем.

Тип
({ nativeEvent: LayoutEvent }) => void

onKeyPress

Обработчик, вызываемый при нажатии клавиши. Будет вызван с объектом, где keyValue равно 'Enter' или 'Backspace' для соответствующих клавиш и набранным символом в противном случае, включая ' ' для пробела. Вызывается до onChange обработчиков. Примечание: на Android обрабатываются только ввод с виртуальной клавиатуры, а не ввод с физической клавиатуры.

Тип
({ nativeEvent: { key: keyValue } }) => void

onLayout

Вызывается при монтировании и при изменениях макета.

Тип
({ nativeEvent: LayoutEvent }) => void

onScroll

Вызывается при прокрутке содержимого. Может также содержать другие свойства из ScrollEvent, но на Android contentSize не предоставляется по соображениям производительности.

Тип
({ nativeEvent: { contentOffset: { x, y } } }) => void

onSelectionChange

Обработчик, вызываемый при изменении выделения текста в текстовом поле.

Тип
({ nativeEvent: { selection: { start, end } } }) => void

onSubmitEditing

Обработчик, вызываемый при нажатии кнопки отправки в текстовом поле.

Тип
({ nativeEvent: { text, eventCount, target }}) => void

Обратите внимание, что на iOS этот метод не вызывается при использовании keyboardType="phone-pad".

placeholder

Строка, которая будет отображаться перед вводом текста.

Тип
строка

placeholderTextColor

Цвет текста подсказки.

Тип
цвет

returnKeyLabel
Android

Устанавливает метку для клавиши возврата. Используйте вместо returnKeyType.

Тип
строка

returnKeyType

Определяет, как должна выглядеть клавиша возврата. На Android также можно использовать returnKeyLabel.

На всех платформах

Следующие значения работают на всех платформах:

  • done
  • go
  • next
  • search
  • send

Только для Android

Следующие значения работают только на Android:

  • none
  • previous

Только для iOS

Следующие значения работают только на iOS:

  • default
  • emergency-call
  • google
  • join
  • route
  • yahoo
Тип
перечисление ('done', 'go', 'next', 'search', 'send', 'none', 'previous', 'default', 'emergency-call', 'google', 'join', 'route', 'yahoo')

rejectResponderTermination
iOS

Если true, разрешает TextInput передавать события касания родительскому компоненту. Это позволяет компонентам, таким как SwipeableListView, быть прокручиваемыми через TextInput на iOS, как это по умолчанию на Android. Если false, TextInput всегда запрашивает обработку ввода (кроме случаев отключения). Значение по умолчанию - true.

Тип
логическое значение

scrollEnabled
iOS

Если false, прокрутка текстового поля будет отключена. Значение по умолчанию - true. Работает только с multiline={true}.

Тип
логическое значение

secureTextEntry

Если true, текстовое поле скрывает введенный текст, чтобы чувствительная информация, например, пароли, оставалась защищенной. Значение по умолчанию - false. Не работает с multiline={true}.

Тип
логическое значение

selection

Начало и конец выделения в текстовом поле. Установите начало и конец в одно и то же значение, чтобы установить курсор.

Тип
объект: {start: число,end: число}

selectionColor

Цвет выделения и курсора текстового поля.

Тип
цвет

selectTextOnFocus

Если true, весь текст будет автоматически выделен при получении фокуса.

END_OF_DOCUMENT_MARKER
Тип
bool

showSoftInputOnFocus

Когда false, это предотвратит отображение виртуальной клавиатуры при фокусировке на поле. Значение по умолчанию — true.

Тип
bool

spellCheck
iOS

Если false, отключает стиль проверки правописания (т.е. красные подчеркивания). Значение по умолчанию наследуется от autoCorrect.

Тип
bool

textAlign

Выравнивание вводимого текста по левому, центру или правому краю поля ввода.

Возможные значения для textAlign:

  • left
  • center
  • right
Тип
enum('left', 'center', 'right')

textContentType
iOS

Предоставление клавиатуре и системе информации о предполагаемом семантическом значении вводимого пользователем контента.

Для iOS 11+ вы можете установить textContentType на username или password для активации автозаполнения данных входа с ключа устройства.

Для iOS 12+ newPassword можно использовать для обозначения нового пароля, который пользователь может сохранить в keychain, а oneTimeCode можно использовать для указания того, что поле может быть автоматически заполнено кодом, пришедшим в SMS.

Для отключения автозаполнения установите textContentType на none.

Возможные значения для textContentType:

  • none
  • URL
  • addressCity
  • addressCityAndState
  • addressState
  • countryName
  • creditCardNumber
  • emailAddress
  • familyName
  • fullStreetAddress
  • givenName
  • jobTitle
  • location
  • middleName
  • name
  • namePrefix
  • nameSuffix
  • nickname
  • organizationName
  • postalCode
  • streetAddressLine1
  • streetAddressLine2
  • sublocality
  • telephoneNumber
  • username
  • password
  • newPassword
  • oneTimeCode
Тип
enum('none', 'URL', 'addressCity', 'addressCityAndState', 'addressState', 'countryName', 'creditCardNumber', 'emailAddress', 'familyName', 'fullStreetAddress', 'givenName', 'jobTitle', 'location', 'middleName', 'name', 'namePrefix', 'nameSuffix', 'nickname', 'organizationName', 'postalCode', 'streetAddressLine1', 'streetAddressLine2', 'sublocality', 'telephoneNumber', 'username', 'password')

passwordRules
iOS

При использовании textContentType в качестве newPassword на iOS, мы можем сообщить ОС о минимальных требованиях к паролю, чтобы она могла сгенерировать пароль, соответствующий этим требованиям. Чтобы создать корректную строку для PasswordRules, обратитесь к Документации Apple.

Если диалоговое окно для генерации паролей не появляется, убедитесь в следующем:

  • Автозаполнение включено: Настройки → Пароли и учётные записи → включить Автозаполнение паролей,
  • Используется iCloud Keychain: Настройки → Apple ID → iCloud → Keychain → включить iCloud Keychain.
Тип
string

style

Обратите внимание, что не все стили текста поддерживаются. Неподдерживаемые стили включают, но не ограничиваются:

  • borderLeftWidth
  • borderTopWidth
  • borderRightWidth
  • borderBottomWidth
  • borderTopLeftRadius
  • borderTopRightRadius
  • borderBottomRightRadius
  • borderBottomLeftRadius

Дополнительную информацию см. в Проблеме #7070.

Стили

Тип
Текст

textBreakStrategy
Android

Установите стратегию разбиения текста на Android API Level 23+, возможные значения — simple, highQuality, balanced Значение по умолчанию — simple.

Тип
enum('simple', 'highQuality', 'balanced')

underlineColorAndroid
Android

Цвет подчеркивания TextInput.

Тип
цвет

value

Значение, отображаемое для текстового поля ввода. TextInput — компонент с управлением, что означает, что значение нативного компонента будет принудительно соответствовать значению этого свойства, если оно предоставлено. Для большинства случаев это отлично работает, но в некоторых случаях это может привести к мерцанию — одной из распространённых причин является предотвращение редактирования, сохраняя значение неизменным. В дополнение к установке одинакового значения, установите editable={false}, или установите/обновите maxLength, чтобы предотвратить нежелательные изменения без мерцания.

Тип
string

Methods

.focus()

focus();

Запрашивает фокус у нативного поля ввода.

.blur()

blur();

Убирает фокус у нативного поля ввода.

clear()

clear();

Удаляет весь текст из TextInput.

isFocused()

isFocused();

Возвращает true, если поле ввода имеет фокус; false, в противном случае.

Известные проблемы

  • react-native#19096: Не поддерживает onKeyPreIme Android.
  • react-native#19366: Вызов .focus() после закрытия клавиатуры Android через кнопку «Назад» не вызывает повторное отображение клавиатуры.
  • react-native#26799: Не поддерживает secureTextEntry Android, когда keyboardType="email-address" или keyboardType="phone-pad".

© 2022 Facebook Inc.
Licensed under the Creative Commons Attribution 4.0 International Public License.
https://reactnative.dev/docs/textinput

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API