注意!转载请注明出处和作者,谢谢

自定义键盘扩展

我们来做一个可以进行科学运算的计算器键盘吧。

2. 创建 Keyboard Extension 扩展

下一步,命名,完成。

修改运行时执行的主应用

在 Run 一项里选择运行时执行的主应用, 勾上 Debug executable:

在 info.plist 文件修改自定义键盘的标题:

以及其他的默认设置:

IsASCIICapable

–布尔值,默认为NO,表示第三方输入法是否可以向文档中插入ASCII字符串。如果您的第三方输入法专门提供UIKeyboardTypeASCIICapable输入法特性,那么将这个选项设置为YES。PrefersRightToLeft

–布尔值,默认为NO,表示第三方输入法使用的是否是一个从右到左的语言。如果您的输入法主语言是从右到左书写的,那么讲这个选项设置为YES。PrimaryLanguage

–字符串值,默认为en-US(美国英语),用以表示您输入法的主语言,使用模式为-。您可以在[这个页面](https://opensource.apple.com/source/CF/CF-476.14/CFLocaleIdentifier.c)找到某一语言和地区所对应的字符串。RequestsOpenAccess

–布尔值,默认为NO,表示第三方输入法是否要扩展到已满足基本输入法需求的沙箱之外。如果开放存取功能,您的输入法将获得如下特性,但每一个都有相应的责任:

1.访问位置服务和地址本数据库,每一个都需在第一次访问时获得授权。

2.可选择与容纳该输入法的应用的共享容器,使得在应用中可以定制词汇表。

3.能够将输入的字符和其他输入事件上传至服务器进行处理。

4.访问iCloud,例如,能够确保输入法的设置以及您的自动修正词汇能够在所有用户设备上同步。

5.通过包含还输入法的应用,能够访问Game Center和应用内购买。

6.能够和受控应用进行协同,如果您使用来设计该输入法以支持移动设备管理(MDM)。

3. 开始写代码

刚创建项目的时候系统会帮你创建一个继承于 UIInputViewController 的类:KeyboardViewController。我们直接在里面添加视图就可以构建键盘页面了。

3.1. 构建键盘

我还是喜欢用 xib 来创建视图。

添加到视图控制器:

keyBoardView = [[UINib nibWithNibName: @"Keyboard" bundle: nil] instantiateWithOwner: nil options: nil][0];

keyBoardView.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 220); //控制键盘的尺寸[self.view addSubview: keyBoardView]; //直接添加到视图控制器

为每个按钮设置方法

for(UIButton *btn in [keyBoardView subviews]){

if([btn isKindOfClass: [UIButton class]]){

[btn addTarget:self action:@selector(keyDidClick:) forControlEvents:UIControlEventTouchUpInside];

}

}

-(void)keyDidClick:(UIButton *)btn {

switch (btn.tag) {

case 116:

[self advanceToNextInputMode]; //切换输入法 break;

case 115:

[self dismissKeyboard];//键盘隐藏 break;

case 119:{

[self.textDocumentProxy deleteBackward];//删除上个输入 }

break;

case 120:{

[self.textDocumentProxy insertText: @"n"]; //按下发送键,即 returnKey }

break;

default:

{

[self.textDocumentProxy insertText: [btn titleForState: UIControlStateNormal]]; //插入文本 if(btn.tag == 114){

//TODO: 计算

}

}

break;

}

}

3.2. 运行

运行之后,我们到手机的设置 -> 通用 -> 键盘 -> 添加第三方键盘,然后打开微信,切换输入法到我们创建的键盘。

P.S. 喜欢就分享或者点个赞呗

ios 输入法扩展_ios 应用扩展—— Keyboard Extension相关推荐

  1. ios 输入法扩展_搜狗输入法 iOS 版开发与优化实践

    输入法是一种对性能要求极高的产品,不同于普通应用开发,很多在普通应用开发看来不是问题的,在输入法看来却是比较关键.同时,由于 iOS 系统的某些限制,输入法不得不在产品功能和性能方面做出调整,以尽可能 ...

  2. ios 输入法扩展_使用第三方 iOS 输入法前你应该知道什么?

    iOS 8 一出,今天各路国内输入法开发商的「7 年之痒」终于解禁,一股脑的推出 iOS 版输入法抢占这块新矿区.微博上扫了一眼,用户们也是热情高涨,曾经的「越狱遮羞布」变成了人人标配的小手帕.但在这 ...

  3. 【iOS开发】——Category底层原理、Extension、关联对象

    [iOS开发]--Category底层原理.Extension.关联对象 Category是什么?它可以用来干什么? Category特点 Category的实质以及实现过程 Category结构体 ...

  4. 【Kotlin】扩展属性 ( 扩展变量属性 | 扩展常量属性 | 注意事项 | 本质分析 )

    文章目录 I . 扩展属性 总结 II . 扩展属性 定义格式 III . 扩展属性 标准示例 IV . 扩展属性 注意事项 V . 扩展属性 本质分析 VI . 扩展属性 代码示例解析 I . 扩展 ...

  5. android输入法框架分析,Android与iOS输入法开发框架比较谈

    对于任何一个使用手机的人,有一样工具是不可能缺少的,它既不是微信之类的社交工具,也不是支付宝之类的金融工具(事实上这两个都越界了),而是输入法这样的输入工具.更重要的是,输入法还是一种特权工具,因为它 ...

  6. PHP - 各种扩展「底层扩展,上层扩展,自带扩展」

    1.应用场景 了解PHP扩展, 学以致用, 帮助理解PHP语言的本质, 以及如何开发出更加高效程序. 2.学习/操作 1. 文档 PHP: 按归属分 - Manual 怎么样"抄" ...

  7. 【Groovy】Groovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )

    文章目录 一.扩展静态方法示例 二.扩展实例方法示例 三.扩展实例方法与扩展静态方法代码相同 一.扩展静态方法示例 在上一篇博客 [Groovy]Groovy 扩展方法 ( Groovy 扩展方法引入 ...

  8. 【Groovy】Groovy 扩展方法 ( Groovy 扩展方法引入 | 分析 Groovy 中 Thread 类的 start 扩展方法 )

    文章目录 一.Groovy 扩展方法引入 二. 分析 Groovy 中 Thread 类的 start 扩展方法 一.Groovy 扩展方法引入 Groovy 可以对 JDK 中的一些类进行 方法扩展 ...

  9. 【Google Play】APK 扩展包 ( 2021年09月02日最新处理方案 | 扩展文件名格式 | 扩展文件下载存放地址 )

    文章目录 前言 一.当前 Google Play 上传 APK 文件现状 二.APK 扩展文件名格式 三.APK 扩展文件下载地址 四.博客资源 前言 2021年08月01日 之后 , Google ...

最新文章

  1. win10计算机添加右键菜单,win10系统如何对鼠标右键菜单进行手动管理和添加
  2. postgreSQL入门01-安装
  3. TortoiseSVN菜单项功能说明
  4. python json是什么_python json详解
  5. abs std::abs_ABS的完整形式是什么?
  6. Boot Loader的启动流程和开发经验总结
  7. JSP+Javabean+Servlet实现用户注册
  8. 60TB 数据量的作业从 Hive 迁移到 Spark 在 Facebook 的实践
  9. java 根据类名示例化类_Java即时类| plusMillis()方法与示例
  10. 使用阿里云对象存储OSS收藏老婆新垣结衣日常照
  11. android 设置setmultichoiceitems设置初始化勾选_Linux内核启动:虚拟盘空间设置和内存管理结构初始化...
  12. Selenium3元素定位详解与封装
  13. Linux查看文件内容的6种命令
  14. 三台服务器无需密码相互访问
  15. U盘硬盘文件提示“文件或目录损坏且无法读取”问题解决
  16. No provider available from registry 192.168.126.129:2181 for service com.jt.service.DubboUserServic
  17. 51GIF GIF动图中文搜索平台,表情包发源地,GIF动图素材库
  18. 【BZOJ】3168: [Heoi2013]钙铁锌硒维生素
  19. 非劣效性 等效性 有效性临床试验
  20. Win10封装常见问题和解决办法

热门文章

  1. 那些书对程序员最有影响
  2. Bean的拷贝之BeanUtils
  3. MaxCompute 图计算用户手册(上)
  4. 时间选择插件Foundation datepicker
  5. Java中String对象存储
  6. [转]使用VS2010的Database 项目模板统一管理数据库对象
  7. android版 eclipse
  8. 51CTO,博客的显示有问题啊
  9. STL 容器和迭代器连载8_访问顺序容器的元素
  10. DEIGRP 的配置