仿微信標(biāo)簽備注UI實(shí)現(xiàn)

最近看到微信的標(biāo)簽備注界面的操作體驗(yàn)挺好的,所以自己也想著實(shí)現(xiàn)一下,最終實(shí)現(xiàn)效果與微信的基本一致,還算是比較滿意的_,所以在這里共享給大家,有需要的同學(xué)可以到這里下載。效果如下:

效果圖

當(dāng)然,這個(gè)實(shí)現(xiàn)的過程也不是一帆風(fēng)順的,之前的想法是使用UICollectionView來實(shí)現(xiàn)這樣的效果,這樣就可以不需要考慮排版和復(fù)用問題。都是做到一半的時(shí)候,進(jìn)行不下去了(還是太菜了。。。T_T),主要是 UITextField隨著輸入文本來動(dòng)態(tài)調(diào)整位置,如果在當(dāng)前行中輸入長(zhǎng)度超過屏幕寬度則需要換到下面一行。這個(gè)雖然能夠捕獲文本變更內(nèi)容來實(shí)時(shí)刷新和計(jì)算文本框位置,但是由于刷新cell會(huì)直接導(dǎo)致UITextField的焦點(diǎn)失效,并且也存在重用問題(同一個(gè)索引位置,在頻繁刷新的情況下Cell會(huì)出現(xiàn)無法復(fù)用問題。。。。這可能是內(nèi)部實(shí)現(xiàn)機(jī)制的緣故)。

基于上面的原因,拋棄了UICollectionView作為基礎(chǔ)組件的想法,直接繼承UIScrollView來進(jìn)行功能實(shí)現(xiàn)。VITagListView雖然基于UIScrollView,但是內(nèi)部還是實(shí)現(xiàn)了簡(jiǎn)單復(fù)用機(jī)制的。在實(shí)現(xiàn)的過程里面遇到最主要的問題有兩個(gè):

  • 點(diǎn)擊標(biāo)簽彈出菜單問題。表面上看非常簡(jiǎn)單,直接使用UIMenuController就可以實(shí)現(xiàn)。但是微信的彈出菜單時(shí),其實(shí)鍵盤還是保持彈出狀態(tài)的(一般都需要使控件先成為響應(yīng)者才可以彈出菜單),VITagListView中的標(biāo)簽使用的是UIButton,因此,如果要保證鍵盤彈出就不能使Button變?yōu)轫憫?yīng)者,所以在控件里面的菜單操作都是由UITextField去處理的。

  • 退格鍵刪除標(biāo)簽問題。當(dāng)在UITextField沒有文本內(nèi)容的情況下,點(diǎn)擊退格鍵就能夠選中和刪除標(biāo)簽,在正常的UITextField代理下是獲取不到這個(gè)事件的,并且在iOS 8.3之前和之后有所變化,具體可以看VITagFielddeleteBackwardkeyboardInputShouldDelete方法。

具體實(shí)現(xiàn)就不這里細(xì)說了,如果有更好的實(shí)現(xiàn)方式和改進(jìn)建議,歡迎與我聯(lián)系,感謝大家的支持~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,201評(píng)論 3 119
  • 晚風(fēng)微涼。 樹葉清脆得發(fā)亮, 翕翕微顫,守護(hù)住枝頭欲要安歇的眠。 街道兩邊或關(guān)或掩的門窗, 倒映出城市的霓虹光彩,...
    寞霏閱讀 284評(píng)論 3 5
  • mv簡(jiǎn)直良心
    小米小姐閱讀 278評(píng)論 0 0
  • 1.DNS 在瀏覽器中輸入U(xiǎn)RL后,首先要進(jìn)行DNS解析,DNS解析的順序?yàn)椋?瀏覽器緩存 本地hosts文件 系...
    Aubin閱讀 480評(píng)論 0 1
  • 簡(jiǎn)書有些像當(dāng)年的博客。 只不過一個(gè)在臺(tái)式電腦,一個(gè)在移動(dòng)端。 也許說的不對(duì)。 但功能差不太多。之一便是承接了大家的...
    阿薩哥閱讀 212評(píng)論 0 0

友情鏈接更多精彩內(nèi)容