管理Text Field與Text View
text field與text view有兩個(gè)主要功能:展示文本并開(kāi)啟文本的輸入與編輯斧吐。一些編程任務(wù)與這些簡(jiǎn)單的目的相關(guān),包括配置文本對(duì)象仲器、訪問(wèn)當(dāng)前文本煤率、驗(yàn)證用戶輸入的內(nèi)容、以及在文本字段中顯示書(shū)簽按鈕等覆蓋視圖乏冀。
這些任務(wù)主要有UITextField或UITextView的委托對(duì)象負(fù)責(zé)蝶糯。
發(fā)送至委托對(duì)象的消息序列
大多數(shù)情況下,當(dāng)一個(gè)UITextField或者UITextView對(duì)象為第一響應(yīng)對(duì)象且發(fā)生狀態(tài)改變時(shí)辆沦,發(fā)送一個(gè)消息序列至其委托對(duì)象昼捍。當(dāng)用戶輕觸一個(gè)文本對(duì)象,它自動(dòng)變?yōu)榈谝豁憫?yīng)對(duì)象肢扯,然后系統(tǒng)會(huì)展示鍵盤(pán)并且文本對(duì)象進(jìn)入編輯狀態(tài)妒茬。用戶輕觸另一個(gè)文本對(duì)象或點(diǎn)擊按鈕結(jié)束編輯時(shí),當(dāng)前的文本對(duì)象退出第一響應(yīng)對(duì)象的狀態(tài)蔚晨。如果沒(méi)有其他文本對(duì)象被選中乍钻,系統(tǒng)會(huì)隱藏鍵盤(pán);否則铭腕,選中的文本對(duì)象成為第一響應(yīng)對(duì)象银择,該對(duì)象的鍵盤(pán)會(huì)被展示。
有一些例外累舷。在iPad上浩考,如果當(dāng)前視圖控制器處于“表單”的模態(tài),鍵盤(pán)一旦出現(xiàn)笋粟,只有點(diǎn)擊了消失鍵或者該視圖控制器消失時(shí)怀挠,鍵盤(pán)才會(huì)消失析蝴。這種行為的目的是避免當(dāng)用戶在text fields間移動(dòng)時(shí)害捕,產(chǎn)生過(guò)多的動(dòng)畫(huà)。另一個(gè)例外涉及text view闷畸。輸入控件(input view)是系統(tǒng)鍵盤(pán)的替代尝盼,當(dāng)出現(xiàn)輸入控件時(shí),UIKit可能立即切掉鍵盤(pán)佑菩,即使當(dāng)前文本對(duì)象仍未第一響應(yīng)對(duì)象盾沫,這時(shí)會(huì)出現(xiàn)一個(gè)像鍵盤(pán)一樣的輸入控件裁赠,來(lái)輸入非文本對(duì)象。
這個(gè)消息序列如下:
- textViewShouldBeginEditing: 委托對(duì)象來(lái)驗(yàn)證當(dāng)前文本對(duì)象是否應(yīng)該成為第一響應(yīng)對(duì)象
- textViewDidBeginEditing:委托可以響應(yīng)該方法赴精,更新?tīng)顟B(tài)信息佩捞。
- textViewDidChange: 當(dāng)文本變化時(shí)調(diào)用(譯者注:委托對(duì)象用來(lái)更新頁(yè)面)
- textViewShouldEndEditing: 委托對(duì)象主要實(shí)現(xiàn)該方法來(lái)驗(yàn)證輸入文本的有效性。
- textViewDidEndEditing: 委托對(duì)象實(shí)現(xiàn)該方法來(lái)獲取用戶輸入或者編輯的文本蕾哟。
對(duì)象仍可以通過(guò)觀察通知來(lái)獲知文本對(duì)象的第一響應(yīng)者狀態(tài)的變化一忱。(然而不能干預(yù)這些狀態(tài)的轉(zhuǎn)變)。通知名包括:UITextFieldTextDidBeginEditingNotification, UITextViewTextDidEndEditingNotification, UITextViewTextDidChangeNotification.
配置Text Field與Text View
如其他視圖一樣谭确,需要在text field或text view出現(xiàn)之前對(duì)其進(jìn)行配置帘营,可通過(guò)代碼,也可通過(guò)IB逐哈。兩種方式都需要設(shè)置他們的屬性芬迄。
有些屬性是共有的,有些是獨(dú)有的昂秃,包括如下幾個(gè)屬性:
- 文本屬性——文本顏色禀梳、對(duì)齊、字體族肠骆、字體出皇、字號(hào)
- 鍵盤(pán)——鍵盤(pán)類型,返回鍵名字哗戈,安全文本輸入郊艘,自動(dòng)啟用返回鍵,所有這些在UITextInputTraits協(xié)議中有描述唯咬。更多內(nèi)容纱注,參照Configuring the Keyboard for Text Objects
- text field 特有的——邊框,背景圖胆胰,失效圖狞贱,清除按鈕,默認(rèn)文字蜀涨。作為UIControl對(duì)象瞎嬉,還有高亮、選中厚柳、啟用以及其他屬性
- text view 特有的——可編輯狀態(tài)氧枣,數(shù)據(jù)檢測(cè)器。由于繼承自UIScrollView别垮,其擁有父類屬性便监。
部分內(nèi)容略,請(qǐng)參照原文
跟蹤text view的選中狀態(tài)
textViewDidchangeSelection: 方法讓你能夠跟蹤用戶選擇文本的變化。你可以實(shí)現(xiàn)這個(gè)方法來(lái)獲取選中的子串烧董。