自定义键盘相关

方式一

苹果官网提供了Coustom Keyboard 关于 App Extension 的方式开发自定义键盘,参照该文档,只需要遵循以下几个步骤即可开发出一个键盘:(注意,此键盘是整个系统通用的第三方键盘。)

  1. 创建一个(Single View Application)单页面模板的工程
  2. 在工程下创建一个(Application Extension)应用扩展 Target ,在这里实现自定义键盘的布局
  3. 回到工程下,在 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 通信。

具体如何实现自定义键盘,可参考开源键盘 Slidden 开发语言是 Swift

最后,以 App Extension 的方式开发的自定义键盘,在使用的时候是需要在设置里面设置的,进入 Settings > General > Keyboard > Keyboards ,点击添加键盘,选中我们的键盘即可。在手机上找个输入框,点击键盘切换键
切换键盘

就可以找到自定义键盘。

方式二

UITextView 和 UITextField 提供了 inputView 属性,是 UIView 类型,通过赋值可以自定义键盘视图,此方式只针对特定的输入框,也不会影响该应用之外的键盘,实用与开发安全键盘。(注意 UITextView 和 UITextField 也提供了属性 inputViewController,是 UIInputViewController 类型,视乎可以复用方式一中的实现,但注意这是个只读属性)

此方式不做过多介绍,项目tasty imitation keyboard
,模拟系统提供的全键盘视图,有点击按键放大效果,同时有按键声,是以方式一介绍的方式开发,项目比较旧,此处有适配Swift 5 的分支,但目前布局对iPhoneX系列的刘海屏适配还不是很友好😂,需要同学们来贡献力量。

需要以方式二方式使用这模拟键盘的同学,可以参考我做的 小修改

推荐阅读更多精彩内容