React-native之TextInput(7)

一. 簡介

TextInput是一個(gè)允許用戶在應(yīng)用中通過鍵盤輸入文本的基本組件溃列。本組件的屬性提供了多種特性的配置衅鹿,譬如自動(dòng)完成诱渤、自動(dòng)大小寫送悔、占位文字,以及多種不同的鍵盤類型(如純數(shù)字鍵盤)等等查乒。

二. 屬性
  • autoCapitalize enum('none', 'sentences', 'words', 'characters')
    控制TextInput是否要自動(dòng)將特定字符切換為大寫:
    characters: 所有的字符敦锌。
    words: 每個(gè)單詞的第一個(gè)字符。
    sentences: 每句話的第一個(gè)字符(默認(rèn))订歪。
    none: 不自動(dòng)切換任何字符為大寫。
  • autoCorrect bool
    如果為false肆捕,會關(guān)閉拼寫自動(dòng)修正刷晋。默認(rèn)值是true。
  • autoFocus bool
    如果為true慎陵,在componentDidMount后會獲得焦點(diǎn)眼虱。默認(rèn)值為false。
  • blurOnSubmit bool
    如果為true席纽,文本框會在提交的時(shí)候失焦捏悬。對于單行輸入框默認(rèn)值為true,多行則為false润梯。注意:對于多行輸入框來說过牙,如果將blurOnSubmit設(shè)為true,則在按下回車鍵時(shí)就會失去焦點(diǎn)同時(shí)觸發(fā)onSubmitEditing事件纺铭,而不會換行寇钉。
  • defaultValue string
    提供一個(gè)文本框中的初始值。當(dāng)用戶開始輸入的時(shí)候舶赔,值就可以改變扫倡。
    在一些簡單的使用情形下,如果你不想用監(jiān)聽消息然后更新value屬性的方法來保持屬性和狀態(tài)同步的時(shí)候竟纳,就可以用defaultValue來代替撵溃。
  • editable bool
    如果為false疚鲤,文本框是不可編輯的。默認(rèn)值為true缘挑。
  • keyboardType enum("default", 'numeric', 'email-address', "ascii-capable", 'numbers-and-punctuation', 'url', 'number-pad', 'phone-pad', 'name-phone-pad', 'decimal-pad', 'twitter', 'web-search')
    決定彈出的何種軟鍵盤的石咬,譬如numeric(純數(shù)字鍵盤)。
    這些值在所有平臺都可用:
    default
    numeric
    email-address
  • maxLength number
    限制文本框中最多的字符數(shù)卖哎。使用這個(gè)屬性而不用JS邏輯去實(shí)現(xiàn)鬼悠,可以避免閃爍的現(xiàn)象。
  • multiline bool
    如果為true亏娜,文本框中可以輸入多行文字焕窝。默認(rèn)值為false。
  • onBlur function
    當(dāng)文本框失去焦點(diǎn)的時(shí)候調(diào)用此回調(diào)函數(shù)维贺。
  • onChange function
    當(dāng)文本框內(nèi)容變化時(shí)調(diào)用此回調(diào)函數(shù)它掂。
  • onChangeText function
    當(dāng)文本框內(nèi)容變化時(shí)調(diào)用此回調(diào)函數(shù)。改變后的文字內(nèi)容會作為參數(shù)傳遞溯泣。
  • onEndEditing function
    當(dāng)文本輸入結(jié)束后調(diào)用此回調(diào)函數(shù)虐秋。
  • onFocus function
    當(dāng)文本框獲得焦點(diǎn)的時(shí)候調(diào)用此回調(diào)函數(shù)。
  • onLayout function
    當(dāng)組件掛載或者布局變化的時(shí)候調(diào)用垃沦,參數(shù)為{x, y, width, height}客给。
  • onSubmitEditing function
    此回調(diào)函數(shù)當(dāng)軟鍵盤的確定/提交按鈕被按下的時(shí)候調(diào)用此函數(shù)。如果multiline={true}肢簿,此屬性不可用靶剑。
  • placeholder string
    如果沒有任何文字輸入,會顯示此字符串池充。
  • placeholderTextColor string
    占位字符串顯示的文字顏色桩引。
  • secureTextEntry bool
    如果為true,文本框會遮住之前輸入的文字收夸,這樣類似密碼之類的敏感文字可以更加安全坑匠。默認(rèn)值為false。
  • selectTextOnFocus bool
    如果為true卧惜,當(dāng)獲得焦點(diǎn)的時(shí)候厘灼,所有的文字都會被選中。
  • selectionColor string
    設(shè)置輸入框高亮?xí)r的顏色(在iOS上還包括光標(biāo))
  • style
    本組件繼承了所有Text的樣式序苏。
  • value string
    文本框中的文字內(nèi)容手幢。
    TextInput是一個(gè)受約束的(Controlled)的組件,意味著如果提供了value屬性忱详,原生值會被強(qiáng)制與value屬性保持一致围来。在大部分情況下這都工作的很好,不過有些情況下會導(dǎo)致一些閃爍現(xiàn)象——一個(gè)常見的原因就是通過不改變value來阻止用戶進(jìn)行編輯。如果你希望阻止用戶輸入监透,可以考慮設(shè)置editable={false}桶错;如果你是希望限制輸入的長度,可以考慮設(shè)置maxLength屬性胀蛮,這兩個(gè)屬性都不會導(dǎo)致閃爍院刁。
  • clearButtonMode enum('never', 'while-editing', 'unless-editing', 'always') (ios)
    是否要在文本框右側(cè)顯示“清除”按鈕。
  • clearTextOnFocus bool (ios)
    如果為true粪狼,每次開始輸入的時(shí)候都會清除文本框的內(nèi)容退腥。
  • enablesReturnKeyAutomatically bool (ios)
    如果為true,鍵盤會在文本框內(nèi)沒有文字的時(shí)候禁用確認(rèn)按鈕再榄。默認(rèn)值為false狡刘。
  • keyboardAppearance enum('default', 'light', 'dark') (ios)
    指定鍵盤的顏色。
  • onKeyPress function (ios)
    當(dāng)一個(gè)鍵被按下的時(shí)候調(diào)用此回調(diào)困鸥。被按下的鍵會作為參數(shù)傳遞給回調(diào)函數(shù)嗅蔬。會在onChange之前調(diào)用。
  • returnKeyType enum('default', 'go', 'google', 'join', 'next', 'route', 'search', 'send', 'yahoo', 'done', 'emergency-call') (ios)
    決定“確定”按鈕顯示的內(nèi)容疾就。
  • selectionState DocumentSelectionState (ios)
    可以控制一個(gè)文檔中哪段文字被選中的狀態(tài)澜术。
  • numberOfLines number (android)
    設(shè)置輸入框的行數(shù)。當(dāng)multiline設(shè)置為true時(shí)使用它猬腰,可以占據(jù)對應(yīng)的行數(shù)鸟废。
  • underlineColorAndroid string (android)
    文本框的下劃線顏色,如果要去掉文本框的邊框漆诽,請將此屬性設(shè)為透明transparent
三. 方法
  • isFocused(): boolean
    返回值表明當(dāng)前輸入框是否獲得了焦點(diǎn)侮攀。
  • clear()
    清空輸入框的內(nèi)容。
四. 示例 文本框自動(dòng)提示的搜索框

var onePT = 1 / PixelRatio.get();
class InputTextDemo extends Component {
render() {
return (
<View style={[styles.flex,styles.marginTop]}>
<Search></Search>
</View>
}
}
class Search extends Component {
constructor(props) {
super(props);
this.state = {
show: false,//是否顯示匹配條目 value: null,//選中的值 }; }
hide(val) { this.setState({ show: false, value: val, }); }
getValue(text) { this.setState({ show: true, value: text, }); }
render() { return ( <View style={styles.flex}> <View style={styles.flexDirection}> <View style={[styles.flex,styles.input]}> <TextInput returnKeyType="search"http://軟鍵盤返回鍵 placeholder="請輸入文字"http://占位符 keyboardType="web-search" onChangeText={this.getValue.bind(this)}//監(jiān)聽輸入字的改變 value={this.state.value}//匹配條目點(diǎn)擊后選中的值 underlineColorAndroid="transparent" /> </View> <View style={styles.btn}> <Text style={styles.search} onPress={this.hide.bind(this,this.state.value)}>搜索</Text> </View> </View> {this.state.show? <View style={styles.result}> <Text onPress={this.hide.bind(this, this.state.value+"的習(xí)慣")} style={styles.item} numberOfLines={1}>{this.state.value}的習(xí)慣 </Text> <Text onPress={this.hide.bind(this, this.state.value+"的視頻")} style={styles.item} numberOfLines={1}>{this.state.value}的視頻</Text> <Text onPress={this.hide.bind(this, "呵呵"+this.state.value+"的文字")} style={styles.item} numberOfLines={1}>呵呵{this.state.value}的文字</Text> <Text onPress={this.hide.bind(this, this.state.value+"的圖片")} style={styles.item} numberOfLines={1}>{this.state.value}的圖片</Text> </View> :null } </View> ); } }

const styles = StyleSheet.create({ flex: { flex: 1 }, marginTop: { marginTop: 25, }, flexDirection: {//方向 因?yàn)镽N默認(rèn)是豎直方向 flexDirection: 'row', }, input: { borderWidth: 1, borderColor: 'red', height: 40, borderRadius: 5, paddingLeft: 10, marginLeft: 10, }, btn: { backgroundColor: '#23BEFF', height: 40, marginLeft: -5, marginRight: 5, width: 45, justifyContent: 'center', alignItems: 'center', }, search: { fontSize: 20, color: '#fff', fontWeight: 'bold', }, result: { marginTop: onePT, marginLeft: 18, marginRight: 10, height: 200, }, item: { fontSize: 16, paddingTop: 5, paddingBottom: 5, }, });

效果

TextInput_01.png

輸入文本

TextInput_02.png

點(diǎn)擊第一個(gè)條目

TextInput_03.png

記錄我自己的RN學(xué)習(xí)之路厢拭,純屬自己增值,有什么不對的地方撇叁,一起討論進(jìn)步

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末供鸠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子陨闹,更是在濱河造成了極大的恐慌楞捂,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趋厉,死亡現(xiàn)場離奇詭異寨闹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)君账,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門繁堡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事椭蹄∥拍担” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵绳矩,是天一觀的道長罩润。 經(jīng)常有香客問我,道長翼馆,這世上最難降的妖魔是什么割以? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮应媚,結(jié)果婚禮上严沥,老公的妹妹穿的比我還像新娘。我一直安慰自己珍特,他們只是感情好祝峻,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扎筒,像睡著了一般莱找。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嗜桌,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天奥溺,我揣著相機(jī)與錄音,去河邊找鬼骨宠。 笑死浮定,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的层亿。 我是一名探鬼主播桦卒,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼匿又!你這毒婦竟也來了方灾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤碌更,失蹤者是張志新(化名)和其女友劉穎裕偿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痛单,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嘿棘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了旭绒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸟妙。...
    茶點(diǎn)故事閱讀 38,569評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡焦人,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出圆仔,到底是詐尸還是另有隱情垃瞧,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布坪郭,位于F島的核電站个从,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏歪沃。R本人自食惡果不足惜嗦锐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沪曙。 院中可真熱鬧奕污,春花似錦、人聲如沸液走。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缘眶。三九已至嘱根,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間巷懈,已是汗流浹背该抒。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留顶燕,地道東北人凑保。 一個(gè)月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像涌攻,于是被迫代替她去往敵國和親欧引。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程恳谎,因...
    小菜c閱讀 6,365評論 0 17
  • TextInput是一個(gè)允許用戶在應(yīng)用中通過鍵盤輸入文本的基本組件维咸。本組件的屬性提供了多種特性的配置,譬如自動(dòng)完成...
    亭止閱讀 3,242評論 1 0
  • 前言 本文有配套視頻惠爽,可以酌情觀看。 文中內(nèi)容因各人理解不同瞬哼,可能會有所偏差婚肆,歡迎朋友們聯(lián)系我。 文中所有內(nèi)容僅供...
    珍此良辰閱讀 1,142評論 0 6
  • View 個(gè)人感覺View就類似于html中的div標(biāo)簽坐慰,支持flexbox布局较性。 一個(gè)簡單的練習(xí)用僧,類似攜程的格子...
    45b645c5912e閱讀 1,175評論 0 0
  • 文本輸入框是iOS開發(fā)中最常用的控件之一。Object-C中有UITextView和UITextfield赞咙,這兩個(gè)...
    Coder_Answer閱讀 10,390評論 0 5