ios 输入法扩展_ios 应用扩展—— Keyboard Extension

本文介绍了如何在iOS中创建一个自定义键盘扩展,特别是专注于构建一个能进行科学运算的计算器键盘。通过创建Keyboard Extension,修改运行时执行的主应用设置,并在info.plist中配置相关选项。接着,使用XIB构建键盘界面并为按钮添加事件处理。最后,运行并设置自定义键盘在设备上的使用,如在微信中切换输入法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2ff34e647e2e3cdfd8dca593e17d9b0a.png

b6b323ad6c7ef70a643bb5d77a453b47.png

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

自定义键盘扩展

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

2. 创建 Keyboard Extension 扩展

cfce3099787442f2267201dca231a9da.png

f0142518febaca8eaf9d3aee790c4b2e.png

下一步,命名,完成。

修改运行时执行的主应用

1a4037aa9a0e0f95d88705ad111dcfb2.png

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

30fafd528aa96ea0b21e7684ece3fac6.png

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

1d991a3b50d596a94499a64faad92db3.png

以及其他的默认设置:

0ae4e95fb6c4f8b8eaafb98911505b67.pngIsASCIICapable

–布尔值,默认为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 来创建视图。

a571a90e2c6504902842ae8734dd9108.png

添加到视图控制器:

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. 运行

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

9e60845fb290141ba2bc59b87a86ab4e.gif

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值