KeyboardExtension开发

    首先新建target选择keyboard extension,xcode会自动新建一个UIViewController的子类UIInputViewController,遵循了一个协议和方法,刚开始只需知道与普通的UIViewController一样用来展示弹出键盘的视图,可以以任何形式添加子试图布局。
    当然,键盘扩展肯定要提供键盘的属性和对于输入删除字符的功能

UITextDocumentProxy提供了键盘模式等属性用来判断
UIKeyInput提供了添加删除的API

    接着对于自定义的界面布局与一般工程一样,需要注意的是bundle和application的使用。

    在bundle中有些文件找不到需要手动添加到Compile Sources中,对于主工程中的文件,例如分类、自定义的类等,可以在xcode右侧的Target Membership中勾选我们的extension,这样在扩展中就可以使用了!

勾选Extension

    在扩展中无法使用UIApplication,如要进行跳转到主app需使用以下代码(比如跳到自己app的设置界面提示打开full access的功能,需要先跳转app再次进行跳转),其中URL Schemes与跳转其他app相同,在设置中设置或者plist中填写

UIResponder* responder =self;

    while((responder = [respondernextResponder]) !=nil) {

        if([responderrespondsToSelector:@selector(openURL:)] ==YES) {

            [responderperformSelector:@selector(openURL:)

                            withObject:[NSURLURLWithString:@"KeyboardExtension://"]];

        }

}

如果需要与主app共享文件则需要使用Capabilities中的App Group(看到这里你已经发现与主app的交互其实和与其他app交互没有区别)

在主target和扩展的target需要使用相同ID


使用下面的代码进行存储和读取

//存储

    UIImage *image = [UImage imageNamed:@"swift知识结构图.jpg"];   

    NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"你的GroupID"];

    groupURL = [groupURL URLByAppendingPathComponent:@"123.jpg"];

    [UIImageJPEGRepresentation(image,0) writeToURL:groupURL atomically:YES]?NSLog(@"success"):NSLog(@"failed");

//读取

    NSURL *groupURL = [[NSFileManager defaultManager]  containerURLForSecurityApplicationGroupIdentifier:@"你的GroupID"];

    NSData *data = [NSData dataWithContentsOfURL:[groupURL URLByAppendingPathComponent:@"123.jpg"]];

    UIImage *image = [UIImage imageWithData:data];

    注意:在进行键盘扩展开发时,尽量使用frame布局,懒加载,减少首次加载的时间,减少内存使用,避免奔溃。有任何问题都可以留言讨论,互相交流。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,053评论 3 119
  • iOS扩展是指?能否列举一些热门或常见的范例? 转自:http://www.cnblogs.com/xdream8...
    JunkieBa阅读 9,222评论 0 1
  • 因为近期庆余年在拍电视剧,演员都符合心目中的设定,于是这个月很高兴地又刷了一遍原著,这本当初个人最喜欢的一篇穿越小...
    步入中年的卡其阅读 3,207评论 0 0
  • 眼睛,浸在 浓浓的雾霾里 等待 思念的画面 心思,浸在 沉沉的回忆里 悠长 哪是思念的尽头 画面,乡愁 小时候 日...
    蓝海晨风阅读 1,468评论 0 3
  • 时间还早,昨天整个人很颓废,早上看了一上午小说,前天晚上十二点才睡,一天整个人精神都处于涣散状态。不能遵守早睡早起...
    三河散人阅读 1,441评论 0 1

友情链接更多精彩内容