解決iOS7上UITextField限制字?jǐn)?shù)輸入導(dǎo)致崩潰問題的方法
在一些場景中,需要限制用戶的輸入字?jǐn)?shù),例如在textField里進(jìn)行控制(textView也類似,崩潰原因也相同),如圖所示


系統(tǒng)會監(jiān)聽文本輸入,需要注意的第一點(diǎn)是輸入法處于聯(lián)想輸入還未確定提交的時候,對于第三方輸入法例如搜狗,聯(lián)想狀態(tài)下的輸入,是監(jiān)聽不到,除非點(diǎn)擊確定輸入到textField,才會觸發(fā)changed事件。

但對于系統(tǒng)鍵盤,聯(lián)想狀態(tài)下的輸入也會監(jiān)聽,這里如果不處理就容易發(fā)生崩潰,例如當(dāng)快要達(dá)到字?jǐn)?shù)限制時,繼續(xù)輸入,此時textField.text =聯(lián)想輸入文字+textField已有文字,當(dāng)textField.text超過字?jǐn)?shù)限制時,就會截取限長部分賦值給textField.text,但這時輸入數(shù)據(jù)還沒提交,textField.text不允許改變,于是沖突產(chǎn)生,繼而導(dǎo)致崩潰。在iOS8、9沒有崩潰的原因估計是系統(tǒng)做了優(yōu)化處理,達(dá)到字?jǐn)?shù)限制時,自動將限制范圍內(nèi)的聯(lián)想文字確定輸入到textField中。

解決辦法是判斷一下markedTextRange是否為nil,即沒有聯(lián)想狀態(tài)或高亮狀態(tài)下的文字時,再進(jìn)行文字限長檢查或賦值

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
詳解Xcode 9 設(shè)置 iOS無線真機(jī)調(diào)試
本篇文章主要介紹了詳解Xcode 9 設(shè)置 iOS無線真機(jī)調(diào)試,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
ios基于UITableViewController實(shí)現(xiàn)列表
這篇文章主要介紹了ios基于UITableViewController實(shí)現(xiàn)列表的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
iOS11實(shí)現(xiàn)App內(nèi)自動連接Wi-Fi的方法
這篇文章主要給大家介紹了關(guān)于iOS11實(shí)現(xiàn)App內(nèi)自動連接Wi-Fi的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10
iOS實(shí)現(xiàn)按鈕點(diǎn)擊選中與被選中切換功能
這篇文章主要介紹了iOS實(shí)現(xiàn)按鈕點(diǎn)擊選中與被選中切換功能,需要的朋友可以參考下2017-07-07
淺談強(qiáng)大易用支持URL Rewrite的iOS路由庫FFRouter
FRouter 是 iOS 中一個強(qiáng)大且易用的 URL 路由庫,支持 URL Rewrite,基于匹配查找 URL,效率高。非常具有實(shí)用價值,需要的朋友可以參考下2018-10-10
iOS毛玻璃效果的實(shí)現(xiàn)及圖片模糊效果的三種方法
App設(shè)計時往往會用到一些模糊效果或者毛玻璃效果,iOS目前已提供一些模糊API可以讓我們方便是使用,本文給大家介紹iOS毛玻璃效果的實(shí)現(xiàn)及圖片模糊效果的三種方法,感興趣的朋友一起學(xué)習(xí)吧2016-01-01

