最近在做項(xiàng)目時(shí)遇到一個(gè)問題俯萌,UITextField在輸入中文時(shí)會(huì)出現(xiàn)下沉的現(xiàn)象崇棠,之后在網(wǎng)上找了很久,發(fā)現(xiàn)有很多遇到同樣問題的人,論壇里面也有很多討論盅视,看了好多捐名,好多帖子最后也是不了了之,最后經(jīng)過自己的嘗試闹击,找到了能解決這個(gè)問題的方法桐筏。于是,在忙完這個(gè)版本后拇砰,對(duì)這個(gè)問題做一個(gè)總結(jié)。文字輸入下沉如下圖所示狰腌,輸入英文時(shí)沒有問題除破,當(dāng)輸入中文后會(huì)向下浮動(dòng)一點(diǎn)。
UITextField下沉.gif
首先說下在什么情況下會(huì)出現(xiàn)這種情況琼腔,當(dāng)我們用代碼創(chuàng)建UITextField時(shí)瑰枫,不會(huì)出現(xiàn)這種情況,只有當(dāng)用xib創(chuàng)建是才有可能出現(xiàn)這種情況丹莲。下圖可以看出光坝,同樣的UITextField,一個(gè)是代碼創(chuàng)建的甥材,一個(gè)是xib里面生成的盯另,出現(xiàn)的效果。
UITextField下沉2.gif
所以洲赵,如果可以手寫代碼創(chuàng)建UITextField鸳惯,那么就可以避免這個(gè)問題。當(dāng)然叠萍,有時(shí)候我們不可避免的需要在xib里面創(chuàng)建芝发,上面說了,只是有可能出現(xiàn)這種情況苛谷,那么我來說明什么情況下會(huì)出現(xiàn)這種現(xiàn)象辅鲸。
當(dāng)我們?cè)趚ib里面創(chuàng)建UITextField,Border Style這個(gè)屬性設(shè)置為第一種UITextBorderStyleNone腹殿,同時(shí)Clear Button設(shè)置為Never appears時(shí)會(huì)出現(xiàn)這種情況独悴。
所以解決方法1:
當(dāng)我們項(xiàng)目中剛好需要后面的清除按鈕時(shí),我們?cè)O(shè)置Clear Button的出現(xiàn)時(shí)機(jī)之后可以避免文字下沉現(xiàn)象赫蛇。如下圖所示绵患,并未出現(xiàn)下沉現(xiàn)象。
UITextField下沉3.gif
可是假如我們項(xiàng)目里面不需要清除鍵悟耘,又怎樣解決問題呢落蝙?
解決方法2:
當(dāng)我們?cè)O(shè)置Border Style這個(gè)屬性為其他值時(shí),也不會(huì)出現(xiàn)文字下沉想象。如下圖所示筏勒,也未出現(xiàn)下沉現(xiàn)象
UITextField下沉4.gif
如果很不湊巧移迫,項(xiàng)目既不需要清除鍵,又要用第一種無邊框風(fēng)格管行,那么怎么處理呢厨埋?這里我自己做實(shí)驗(yàn)找到了解決方法。
解決方法3:
我們可以在xib里面設(shè)置Border Style這個(gè)屬性為其他值捐顷,然后將xib里面UITextField拖出來荡陷,再用代碼設(shè)置Border Style這個(gè)屬性為UITextBorderStyleNone,也能解決文字下沉的問題迅涮。設(shè)置如下
下沉5.png
效果圖如下废赞,同樣未出現(xiàn)下沉問題
UITextField下沉5.gif
當(dāng)然,也可以在xib里面設(shè)置Clear Button為有清除鍵叮姑,再在代碼里面設(shè)置為不需要清除鍵也可以解決下沉問題唉地。
大家可以根據(jù)自己的實(shí)際情況,選擇合適的處理方式传透。這是我項(xiàng)目中遇到的問題耘沼,總結(jié)出來,既是對(duì)自己加深印象朱盐,也可以幫助同樣為這個(gè)問題而焦頭爛額的朋友們群嗤。
如果有什么問題可以隨時(shí)溝通交流,以上都是我個(gè)人的觀點(diǎn)和經(jīng)驗(yàn)托享,有什么不對(duì)的地方骚烧,還望指正。