解決iOS7上UITextField限制字?jǐn)?shù)輸入導(dǎo)致崩潰問題的方法
在一些場景中,需要限制用戶的輸入字?jǐn)?shù),例如在textField里進(jìn)行控制(textView也類似,崩潰原因也相同),如圖所示
系統(tǒng)會(huì)監(jiān)聽文本輸入,需要注意的第一點(diǎn)是輸入法處于聯(lián)想輸入還未確定提交的時(shí)候,對于第三方輸入法例如搜狗,聯(lián)想狀態(tài)下的輸入,是監(jiān)聽不到,除非點(diǎn)擊確定輸入到textField,才會(huì)觸發(fā)changed事件。
但對于系統(tǒng)鍵盤,聯(lián)想狀態(tài)下的輸入也會(huì)監(jiān)聽,這里如果不處理就容易發(fā)生崩潰,例如當(dāng)快要達(dá)到字?jǐn)?shù)限制時(shí),繼續(xù)輸入,此時(shí)textField.text =聯(lián)想輸入文字+textField已有文字,當(dāng)textField.text超過字?jǐn)?shù)限制時(shí),就會(huì)截取限長部分賦值給textField.text,但這時(shí)輸入數(shù)據(jù)還沒提交,textField.text不允許改變,于是沖突產(chǎn)生,繼而導(dǎo)致崩潰。在iOS8、9沒有崩潰的原因估計(jì)是系統(tǒng)做了優(yōu)化處理,達(dá)到字?jǐn)?shù)限制時(shí),自動(dòng)將限制范圍內(nèi)的聯(lián)想文字確定輸入到textField中。
解決辦法是判斷一下markedTextRange是否為nil,即沒有聯(lián)想狀態(tài)或高亮狀態(tài)下的文字時(shí),再進(jìn)行文字限長檢查或賦值
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
IOS 避免self循環(huán)引用的方法的實(shí)例詳解
這篇文章主要介紹了IOS 避免self循環(huán)引用的方法的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09IOS 實(shí)現(xiàn)微信自動(dòng)搶紅包(非越獄IPhone)
這篇文章主要介紹了IOS 實(shí)現(xiàn)微信自動(dòng)搶紅包(非越獄IPhone)的相關(guān)資料,這里對實(shí)現(xiàn)自動(dòng)搶紅包做一個(gè)詳細(xì)的實(shí)現(xiàn)步驟,需要的朋友可以參考下2016-11-11詳解iOS中多線程app開發(fā)的GCD隊(duì)列的使用
這篇文章主要介紹了詳解iOS中多線程app開發(fā)的GCD隊(duì)列的使用,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-12-12Swift 去除 TableView 多余的空Cell中的橫線的方法
這篇文章主要介紹了Swift 去除 TableView 多余的空Cell中的橫線的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02iOS NSCache和NSUrlCache緩存類實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了iOS NSCache和NSUrlCache緩存類實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11iOS實(shí)現(xiàn)調(diào)用QQ客戶端發(fā)起臨時(shí)會(huì)話
本篇文章主要給大家詳細(xì)分析了用IOS實(shí)現(xiàn)調(diào)用QQ客戶端發(fā)起臨時(shí)會(huì)話的功能,對此有需要的朋友收藏分享下。2018-02-02