方式一
蘋果官網提供了Coustom Keyboard 關于 App Extension 的方式開發(fā)自定義鍵盤,參照該文檔,只需要遵循以下幾個步驟即可開發(fā)出一個鍵盤:(注意叁执,此鍵盤是整個系統(tǒng)通用的第三方鍵盤。)
- 創(chuàng)建一個(Single View Application)單頁面模板的工程
- 在工程下創(chuàng)建一個(Application Extension)應用擴展 Target ,在這里實現(xiàn)自定義鍵盤的布局
- 回到工程下团南,在 info.plist 下加入以下內容
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>IsASCIICapable</key>
<false/>
<key>PrefersRightToLeft</key>
<false/>
<key>PrimaryLanguage</key>
<string>en-US</string>
<key>RequestsOpenAccess</key>
<false/>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.keyboard-service</string>
<key>NSExtensionPrincipalClass</key>
<string>KeyboardViewController</string>
</dict>
其中 KeyboardViewController 為 Target 下自定義鍵盤的類名,其繼承自 UIInputViewController 炼彪,其屬性 inputView 負責鍵盤布局吐根;textDocumentProxy 負責文字的編輯,與 UITextView 或者 UITextField 通信辐马。
具體如何實現(xiàn)自定義鍵盤拷橘,可參考開源鍵盤 Slidden 開發(fā)語言是 Swift
最后,以 App Extension 的方式開發(fā)的自定義鍵盤,在使用的時候是需要在設置里面設置的膜楷,進入 Settings > General > Keyboard > Keyboards 旭咽,點擊添加鍵盤,選中我們的鍵盤即可赌厅。在手機上找個輸入框穷绵,點擊鍵盤切換鍵就可以找到自定義鍵盤。
方式二
UITextView 和 UITextField 提供了 inputView 屬性特愿,是 UIView 類型仲墨,通過賦值可以自定義鍵盤視圖,此方式只針對特定的輸入框揍障,也不會影響該應用之外的鍵盤目养,實用與開發(fā)安全鍵盤。(注意 UITextView 和 UITextField 也提供了屬性 inputViewController毒嫡,是 UIInputViewController 類型癌蚁,視乎可以復用方式一中的實現(xiàn),但注意這是個只讀屬性)
此方式不做過多介紹兜畸,項目tasty imitation keyboard
努释,模擬系統(tǒng)提供的全鍵盤視圖,有點擊按鍵放大效果咬摇,同時有按鍵聲伐蒂,是以方式一介紹的方式開發(fā),項目比較舊肛鹏,此處有適配Swift 5 的分支逸邦,但目前布局對iPhoneX系列的劉海屏適配還不是很友好??,需要同學們來貢獻力量在扰。
需要以方式二方式使用這模擬鍵盤的同學缕减,可以參考我做的 小修改