swift4.0 - 自定義鍵盤

老規(guī)矩 Demo地址
看下我們自定義的鍵盤效果
keyboard.gif
項目中需求不能讓用戶使用漢字輸入法,同時不能聯(lián)想等等。說了一大堆。沒辦法自己手動實現(xiàn)一下只帶大小寫英文和數(shù)字輸入法以及標點符號輸入。
首先還是要先感謝@Misaki_yuyi這篇文章的思路iOS 自定義數(shù)字和字母鍵盤
基于自定義的基礎(chǔ)上實現(xiàn)了基本的需求
大寫.png
小寫.png

數(shù)字字符.png
字符.png
大致實現(xiàn)思路如下

1.主鍵盤26個按鈕采用UICollectionView實現(xiàn),通過自定義flowlayout顯示自動布局和定義大小間距
2.我們看到的鍵盤切換,以及底部幾個按鈕采用自定義button來實現(xiàn)
3.鍵盤父視圖采用繼承UIView實現(xiàn),數(shù)據(jù)處理全部放在ZMKeyBoardView內(nèi)部進行實現(xiàn)處理,
4.外部調(diào)用只需要創(chuàng)建ZMKeyBoardView,讓當前的textfield的inputview = ZMKeyBoardView() 即可

看下代碼層
public.png
大致說下根目錄作用,采用MVC實現(xiàn)

1.image文件夾主要放自定義鍵盤需要的圖片
2.util中的ZMKeyBoardUtil主要放置需要用到的數(shù)據(jù)源邏輯處理,方便我們使用的時候直接調(diào)用
3.ZMKeyBoadModel就是鍵盤需要用的模型
4.ZMCollectionViewCell是我們實現(xiàn)的自定義cell。ZMCollectionLayout是我們自定義的layout來滿足指定間距大小動態(tài)化布局的。
5.。ZMKeyBoardView就是我們的父視圖,所有的自定義鍵盤控件添加,邏輯處理都放在這里邊。

實現(xiàn)的話,主要的26個英文item采用的是collectionView,分三個區(qū)。樣式放在了cell里邊,布局屬性放到了自定義layout里邊。其他5個按鈕統(tǒng)一使用ZMKeyBoardButtonView進行實現(xiàn)。已經(jīng)開出需要用到的方法,比如點擊高亮,切換處理。等
調(diào)用比較方便,調(diào)用示例
        let keyBoards = ZMKeyBoardView()
        textfield1.inputView = keyBoards
        keyBoards.inputSource = textfield1

最后再附上 Demo地址
代碼層需要優(yōu)化的地方還有很多,希望你在看完Demo后能提出寶貴的意見。愿與君共勉
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,204評論 3 119
  • 我很安靜的想和你說件事 我想把之前我說的“喜歡你”這句話收回來,你呢,就忘記我說的,我也忘記你說的。好不好? 其實...
    cuzy閱讀 244評論 0 0
  • 很久沒吃火鍋了,趁著周末,一家人騎著小黃車來到華神龍火鍋,每次想來這,看到門口排著長隊,又打退堂鼓了。 今天特地五...
    莉莉說閱讀 336評論 0 0
  • 曾經(jīng)校園里的我們是否為愛瘋狂過,和他(她)在花園里畫畫,在天臺上看星星,一起逃課,一起看電影……;曾經(jīng)校園里的的我...
    7_LH_M閱讀 125評論 0 0
  • 制作簡介 早期做了一系列村上的書,但沒有花什么心思去排版,只是重繪了高清封面。 題外話 拜國內(nèi)的文青們所賜,村上的...
    hyx108閱讀 393評論 0 0

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