【React Native】文件翻譯閱讀紀錄 - Components(組件) - TextInput
![]() |
| Facebook Open Source React Native |
用於通過鍵盤將文本輸入應用程序的基礎組件。道具為多個功能提供可配置性,例如自動更正,自動大寫,佔位符文本和不同的鍵盤類型,例如數字小鍵盤。
最簡單的用例是刪除TextInput並訂閱onChangeText事件以讀取用戶輸入。還有其他事件,例如可以訂閱的onSubmitEditing和onFocus。一個簡單的例子:
最簡單的用例是刪除TextInput並訂閱onChangeText事件以讀取用戶輸入。還有其他事件,例如可以訂閱的onSubmitEditing和onFocus。一個簡單的例子:
請注意,某些道具僅適用於 multiline = {true / false}。此外,如果 multiline = false,則不會應用僅應用於元素一側的邊框樣式(例如,borderBottomColor,borderLeftWidth 等)。要實現相同的效果,可以將 TextInput 包裝在View中:
TextInput默認情況下在其視圖底部有一個邊框。此邊框的填充由系統提供的背景圖像設置,無法更改。避免這種情況的解決方案是要么不明確地設置高度,系統將負責在正確的位置顯示邊框,或者通過將underlineColorAndroid設置為透明來不顯示邊框。
請注意,在Android上執行輸入中的文本選擇可以將應用程序的活動windowSoftInputMode參數更改為adjustResize。當鍵盤處於活動狀態時,這可能會導致位置為“絕對”的組件出現問題。要避免此行為,請在AndroidManifest.xml(https://developer.android.com/guide/topics/manifest/activity-element.html)中指定windowSoftInputMode,或使用本機代碼以編程方式控制此參數。
請注意,在Android上執行輸入中的文本選擇可以將應用程序的活動windowSoftInputMode參數更改為adjustResize。當鍵盤處於活動狀態時,這可能會導致位置為“絕對”的組件出現問題。要避免此行為,請在AndroidManifest.xml(https://developer.android.com/guide/topics/manifest/activity-element.html)中指定windowSoftInputMode,或使用本機代碼以編程方式控制此參數。
Props
allowFontScalingautoCapitalizeautoCorrectautoFocusblurOnSubmitcaretHiddenclearButtonModeclearTextOnFocuscontextMenuHiddendataDetectorTypesdefaultValuedisableFullscreenUIeditableenablesReturnKeyAutomaticallyinlineImageLeftinlineImagePaddingkeyboardAppearancekeyboardTypemaxLengthmultilinenumberOfLinesonBluronChangeonChangeTextonContentSizeChangeonEndEditingonFocusonKeyPressonLayoutonScrollonSelectionChangeonSubmitEditingplaceholderplaceholderTextColorreturnKeyLabelreturnKeyTypesecureTextEntryselectionselectionColorselectionStateselectTextOnFocusspellChecktextContentTypestyletextBreakStrategyunderlineColorAndroidvalue
Methods
參考
Props
allowFontScaling
指定字體是否應縮放以遵循“文本大小”輔助功能設置。默認值為true。
| TYPE | REQUIRED |
|---|---|
| bool | No |
autoCapitalize
可以告訴 TextInput 自動將某些字符大寫。
characters: 所有字符。words: 每個單詞的第一個字母。sentences: 每個句子的第一個字母(默認)。none: 不要自動大寫任何東西。
| TYPE | REQUIRED |
|---|---|
| enum('none', 'sentences', 'words', 'characters') | No |
autoCorrect
如果為 false,則禁用自動更正。默認值是true。
| TYPE | REQUIRED |
|---|---|
| bool | No |
autoFocus
如果為 true,則將輸入集中在 componentDidMount 上。默認值為false。
| TYPE | REQUIRED |
|---|---|
| bool | No |
blurOnSubmit
如果為 true,則提交時文本字段將模糊。單行字段的默認值為 true,多行字段的默認值為 false。請注意,對於多行字段,將 blurOnSubmit 設置為 true 意味著按下return 會使字段模糊並觸發 onSubmitEditing 事件,而不是在字段中插入換行符。
| TYPE | REQUIRED |
|---|---|
| bool | No |
caretHidden
如果是真的,就會隱藏插入符號。默認值為false。
| TYPE | REQUIRED |
|---|---|
| bool | No |
clearButtonMode
清除按鈕應出現在文本視圖的右側。僅對單行TextInput組件支持此屬性。
| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| enum('never', 'while-editing', 'unless-editing', 'always') | No | iOS |
clearTextOnFocus
如果為true,則在編輯開始時自動清除文本字段。
| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| bool | No | iOS |
contextMenuHidden
如果為true,則隱藏上下文菜單。默認值為false。
| TYPE | REQUIRED |
|---|---|
| bool | No |
dataDetectorTypes
確定在文本輸入中轉換為可單擊URL的數據類型。僅在multiline = {true}和editable = {false}時有效。默認情況下,未檢測到任何數據類型
您可以提供一種類型或多種類型的數組。
dataDetectorTypes 的可能值為:
'phoneNumber''link''address''calendarEvent''none''all'
| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| enum('phoneNumber', 'link', 'address', 'calendarEvent', 'none', 'all'), ,array of enum('phoneNumber', 'link', 'address', 'calendarEvent', 'none', 'all') | No | iOS |
defaultValue
提供在用戶開始鍵入時將更改的初始值。對於您不想處理事件監聽和更新值prop以保持受控狀態同步的簡單用例非常有用。
| TYPE | REQUIRED |
|---|---|
| string | No |
disableFullscreenUI
如果為假,如果在文本輸入周圍存在少量可用空間(例如,電話上的橫向),則OS可以選擇讓用戶在全屏文本輸入模式內編輯文本。如果為true,則禁用此功能,用戶將始終直接在文本輸入內編輯文本。默認為false。
| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| bool | No | Android |
editable
如果為false,則文本不可編輯。默認值是true。
| TYPE | REQUIRED |
|---|---|
| bool | No |
enablesReturnKeyAutomatically
如果為true,則鍵盤在沒有文本時禁用返回鍵,並在有文本時自動啟用它。默認值為false。
| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| bool | No | iOS |
inlineImageLeft
如果已定義,則提供的圖像資源將在左側呈現。圖像資源必須位於/ android / app / src / main / res / drawable中並且引用為
<TextInput
inlineImageLeft='search_icon'
/>
| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| string | No | Android |
inlineImagePadding
內聯圖像(如果有)和文本輸入本身之間的填充。
| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| number | No | Android |
keyboardAppearance
確定鍵盤的顏色。
| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| enum('default', 'light', 'dark') | No | iOS |
keyboardType
確定要打開的鍵盤,例如數字。
以下值適用於各種平台:
defaultnumber-paddecimal-padnumericemail-addressphone-pad
僅適用於 iOS
以下值僅適用於iOS:
ascii-capablenumbers-and-punctuationurlname-phone-padtwitterweb-search
僅適用於 Android
以下值僅適用於Android:
visible-password
| TYPE | REQUIRED |
|---|---|
| enum('default', 'email-address', 'numeric', 'phone-pad', 'ascii-capable', 'numbers-and-punctuation', 'url', 'number-pad', 'name-phone-pad', 'decimal-pad', 'twitter', 'web-search', 'visible-password') | No |
maxLength
限制可輸入的最大字符數。使用它而不是在JS中實現邏輯以避免閃爍。
| TYPE | REQUIRED |
|---|---|
| number | No |
multiline
如果為true,則文本輸入可以是多行。默認值為false。
| TYPE | REQUIRED |
|---|---|
| bool | No |
numberOfLines
設置TextInput的行數。使用多線設置為true可以填充線條。
| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| number | No | Android |
onBlur
Callback that is called when the text input is blurred.
| TYPE | REQUIRED |
|---|---|
| function | No |
onChange
文本輸入模糊時調用的回調。
| TYPE | REQUIRED |
|---|---|
| function | No |
onChangeText
文本輸入文本更改時調用的回調。更改的文本作為參數傳遞給回調處理程序。
| TYPE | REQUIRED |
|---|---|
| function | No |
onContentSizeChange
文本輸入的內容大小更改時調用的回調。這將使用{nativeEvent:{contentSize:{width,height}}}調用。
僅調用多行文本輸入。
僅調用多行文本輸入。
| TYPE | REQUIRED |
|---|---|
| function | No |
onEndEditing
文本輸入結束時調用的回調。
| TYPE | REQUIRED |
|---|---|
| function | No |
onFocus
調整文本輸入時調用的回調。
| TYPE | REQUIRED |
|---|---|
| function | No |
onKeyPress
按下某個鍵時調用的回調。這將使用{nativeEvent:{key:keyValue}}調用,其中keyValue為各個鍵的“Enter”或“Backspace”以及鍵入的字符,否則包括“for space”。在onChange回調之前觸發。注意:在Android上只處理來自軟鍵盤的輸入,而不是硬件鍵盤輸入。
| TYPE | REQUIRED |
|---|---|
| function | No |
onLayout
使用{x,y,width,height}調整安裝和佈局更改。
| TYPE | REQUIRED |
|---|---|
| function | No |
onScroll
使用{nativeEvent:{contentOffset:{x,y}}}在內容滾動上調用。也可能包含ScrollEvent中的其他屬性,但出於性能原因,未提供Android contentSize。
| TYPE | REQUIRED |
|---|---|
| function | No |
onSelectionChange
更改文本輸入選擇時調用的回調。這將使用{nativeEvent:{selection:{start,end}}}調用。
| TYPE | REQUIRED |
|---|---|
| function | No |
onSubmitEditing
按下文本輸入的提交按鈕時調用的回調。如果指定了multiline = {true},則無效。
| TYPE | REQUIRED |
|---|---|
| function | No |
placeholder
輸入文本輸入之前將呈現的字符串。
| TYPE | REQUIRED |
|---|---|
| string | No |
placeholderTextColor
佔位符字符串的文本顏色。
| TYPE | REQUIRED |
|---|---|
| color | No |
returnKeyLabel
設置標籤的返回鍵。使用它而不是 returnKeyType。
| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| string | No | Android |
returnKeyType
確定返回鍵的外觀。在Android上,您還可以使用returnKeyLabel。
跨平台
以下值適用於各種平台:
跨平台
以下值適用於各種平台:
donegonextsearchsend
Android僅限
以下值僅適用於Android:
以下值僅適用於Android:
noneprevious
僅適用於iOS
以下值僅適用於iOS:
以下值僅適用於iOS:
defaultemergency-callgooglejoinrouteyahoo
| TYPE | REQUIRED |
|---|---|
| enum('done', 'go', 'next', 'search', 'send', 'none', 'previous', 'default', 'emergency-call', 'google', 'join', 'route', 'yahoo') | No |
secureTextEntry
如果為true,則文本輸入會模糊輸入的文本,以便密碼等敏感文本保持安全。默認值為false。不適用於'multiline = {true}'。
| TYPE | REQUIRED |
|---|---|
| bool | No |
selection
文本輸入選擇的開始和結束。將start和end設置為相同的值以定位光標。
| TYPE | REQUIRED |
|---|---|
| object: {start: number,end: number} | No |
selectionColor
文本輸入的高亮和光標顏色。
| TYPE | REQUIRED |
|---|---|
| color | No |
selectionState
DocumentSelectionState 的一個實例,這是一個負責維護文檔選擇信息的狀態。
可以使用此實例執行的某些功能是:
可以使用此實例執行的某些功能是:
blur()focus()update()
| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| DocumentSelectionState | No | iOS |
selectTextOnFocus
如果為true,則將在焦點上自動選擇所有文本。
| TYPE | REQUIRED |
|---|---|
| bool | No |
spellCheck
如果為false,則禁用拼寫檢查樣式(即紅色下劃線)。默認值從autoCorrect繼承。
| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| bool | No | iOS |
textContentType
為鍵盤和系統提供有關用戶輸入內容的預期語義含義的信息。
對於iOS 11+,您可以將 textContentType 設置為用戶名或密碼,以啟用從設備鑰匙串自動填充登錄詳細信息。
要禁用自動填充,請將 textContentType 設置為 none。
textContentType 的可能值為:
對於iOS 11+,您可以將 textContentType 設置為用戶名或密碼,以啟用從設備鑰匙串自動填充登錄詳細信息。
要禁用自動填充,請將 textContentType 設置為 none。
textContentType 的可能值為:
noneURLaddressCityaddressCityAndStateaddressStatecountryNamecreditCardNumberemailAddressfamilyNamefullStreetAddressgivenNamejobTitlelocationmiddleNamenamenamePrefixnameSuffixnicknameorganizationNamepostalCodestreetAddressLine1streetAddressLine2sublocalitytelephoneNumberusernamepassword
| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| 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') | No | iOS |
style
請注意,並非所有文本樣式都受支持,不支持的不完整列表包括:
borderLeftWidthborderTopWidthborderRightWidthborderBottomWidthborderTopLeftRadiusborderTopRightRadiusborderBottomRightRadiusborderBottomLeftRadius
see Issue#7070 for more detail.
| TYPE | REQUIRED |
|---|---|
| Text | No |
textBreakStrategy
在Android API Level 23+上設置文本中斷策略,可能的值很簡單
simple, highQuality, balanced 默認值 simple.| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| enum('simple', 'highQuality', 'balanced') | No | Android |
underlineColorAndroid
TextInput 下劃線的顏色。
| TYPE | REQUIRED | PLATFORM |
|---|---|---|
| color | No | Android |
value
要為文本輸入顯示的值。 TextInput是一個受控組件,這意味著如果提供的話,將強製本機值與此值prop匹配。對於大多數用途,這很有效,但在某些情況下,這可能會導致閃爍 - 一個常見原因是通過保持值相同來阻止編輯。除了簡單地設置相同的值之外,還可以設置editable = {false},或設置/更新maxLength以防止不需要的編輯而不閃爍。
| TYPE | REQUIRED |
|---|---|
| string | No |
Methods
clear()
clear();
從 TextInput 中刪除所有文本。
isFocused()
isFocused():
如果輸入當前是聚焦的,則返回true;否則是假的。

0 意見