老規(guī)矩 Demo地址
看下我們自定義的鍵盤效果
keyboard.gif

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

大寫.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