swift-UITextfield輸入框大寫格式

背景:

? ? ?需求中的一個(gè)車輛編輯頁面要求輸入框是大寫格式,且用戶是小寫的字母在輸入后轉(zhuǎn)為大寫遏乔。并不是簡單的將輸入框的鍵盤指定為大寫向图,因?yàn)橛幸恍┫到y(tǒng)外的輸入法如搜狗輸入法等是不可控的。

實(shí)現(xiàn)方式:

輸入框使用UITextfield來實(shí)現(xiàn)的收擦,想要在文字顯示在textfield前就對小寫進(jìn)行轉(zhuǎn)換鞋既,因此遵守UItextField 的UITextFieldDelegate協(xié)議,實(shí)現(xiàn)它的代理方法耍铜,因?yàn)槲覀兌贾肋@個(gè)代理方法是是在文字還沒有出現(xiàn)的時(shí)候的攔截邑闺,如果返回true就是直接輸出了,返回false就不會(huì)直接輸出棕兼,因此我們需要將轉(zhuǎn)換完成后的文字添加到輸入框里陡舅,首先要做的就是先找好文字的輸入位置然后將文字放到textfield的屬性中去并且處理光標(biāo)

如下:

? func textField(_ textField:UITextField, shouldChangeCharactersIn range:NSRange, replacementString string:String) ->Bool{

? ? ? ? if string.count==0|| string ==" "{

? ? ? ? ? ? return true

? ? ? ? }

? ? ? ? let nCharacter = string.unicodeScalars

? ? ? ? var charNum:Int=0

? ? ? ? for i? in nCharacter{

?? ? ? ? ? ? charNum =? Int(i.value)

? ? ? ? ? ? if charNum >96 && charNum <123{

? ? ? ? ? ? ? ? let uppercaseStr = string.uppercased()

? ? ? ? ? ? ? ? let str =? (textField.text!asNSString).substring(to: range.location)

? ? ? ? ? ? ? ? let str2 =? (textField.text!asNSString).substring(from: range.location)

? ? ? ? ? ? ? ? textField.text=String.init(format:"%@%@%@",str,uppercaseStr,str2)

? ? ? ? ? ? ? ? ? rx_updateTextValue.onNext(String.init(format:"%@%@%@",str,uppercaseStr,str2))

? ? ? ? ? ? ? ? let length:Int= str2.count

? ? ? ? ? ? ? ? let endDocument = textField.endOfDocument

? ? ? ? ? ? ? ? let start = textField.position(from: endDocument, offset: -(length))

? ? ? ? ? ? ? ? let end = textField.position(from: endDocument, offset: -(length))

? ? ? ? ? ? ? ? textField.selectedTextRange= textField.textRange(from: start!, to: end!)

?? ? ? ? ? ? ? ?return false

? ? ? ? ? ? }

? ? ? ? ? ? ifrange.location==0{

? ? ? ? ? ? ? fisrNumHandler(String.init(format:"%@",string))

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return true

? ? }

注意:

小寫轉(zhuǎn)為大寫的算法比較簡單,其中 要注意的是 rx_updateTextValue.onNext(String.init(format:"%@%@%@",str,uppercaseStr,str2)) ?一定要寫伴挚,因?yàn)槲沂怯肦XSwift對uitexfield的text與數(shù)據(jù)模型進(jìn)行相互綁定的靶衍,而只有textField有輸入時(shí)才會(huì)有效的對數(shù)據(jù)模型更行,但是我在小寫轉(zhuǎn)大寫后返回了false茎芋,因此會(huì)認(rèn)會(huì)沒有輸入颅眶,所以我要單獨(dú)來通知數(shù)據(jù)模型我的輸入框數(shù)據(jù)發(fā)生了變化。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末田弥,一起剝皮案震驚了整個(gè)濱河市涛酗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌偷厦,老刑警劉巖商叹,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異只泼,居然都是意外死亡剖笙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門请唱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弥咪,“玉大人,你說我怎么就攤上這事籍滴±乙模” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵孽惰,是天一觀的道長晚岭。 經(jīng)常有香客問我,道長勋功,這世上最難降的妖魔是什么坦报? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任库说,我火速辦了婚禮,結(jié)果婚禮上片择,老公的妹妹穿的比我還像新娘潜的。我一直安慰自己,他們只是感情好字管,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布啰挪。 她就那樣靜靜地躺著,像睡著了一般嘲叔。 火紅的嫁衣襯著肌膚如雪亡呵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天硫戈,我揣著相機(jī)與錄音锰什,去河邊找鬼。 笑死丁逝,一個(gè)胖子當(dāng)著我的面吹牛汁胆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播霜幼,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼嫩码,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了罪既?” 一聲冷哼從身側(cè)響起谢谦,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎萝衩,沒想到半個(gè)月后回挽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡猩谊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年千劈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牌捷。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡墙牌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出暗甥,到底是詐尸還是另有隱情喜滨,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布撤防,位于F島的核電站虽风,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辜膝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一无牵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧厂抖,春花似錦茎毁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至墙懂,卻和暖如春崔梗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背垒在。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扔亥,地道東北人场躯。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像旅挤,于是被迫代替她去往敵國和親踢关。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

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