iOS9 3DTouch 新特性之实现过程—OC版

来源:互联网 发布:天下3帅气男号捏脸数据 编辑:程序博客网 时间:2024/06/10 03:28

一、前言
因最近入手一个6sp, 看着3DTouch 挺好玩的,就想自己实现下,
3D Touch 听上去好高端,很难开发的样子,但原来那么简单,往往看着复杂高端的的东西其实简单。因为很多都是现成可用的。
好了 上代码

二、配置、设置、实现
1.静态配置 & 动态 配置
1.1 静态配置 首先打开plist文件
1.2 在plist添加 UIApplicationShortcutItems 添加item
这里写图片描述

注释:UIApplicationShortcutItemType(必填项) 这个键值设置一个快捷通道类型的字符串UIApplicationShortcutItemTitle (必填项)  这个键值设置标签的标题UIApplicationShortcutItemSubtitle (可选项)  设置标签的副标题UIApplicationShortcutItemIconType (可选项)  设置标签Icon类型

2.动态配置
在appDelegate.m文件中 设置, 我喜欢在代码中设置,方便
在appDelegate.m

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {      //  创建ShortcutItem      [self createShortcutItem]; // 设置 3D touch 快捷选项    UIApplicationShortcutItem *shortcutItem = [launchOptions valueForKey:UIApplicationLaunchOptionsShortcutItemKey];    //如果是从快捷选项标签启动app,则根据不同标识执行不同操作,然后返回NO,防止调用- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler    if (shortcutItem) {        if ([shortcutItem.type isEqualToString:@"com.gonghuipay.gongfubao.pay"]) {            //  进入发工资界面            GFBLog(@"进入发工资界面");            XZHPaySalaryProjectVC *paySalaryVC = [[XZHPaySalaryProjectVC alloc] initWithNibName:@"XZHPaySalaryProjectVC" bundle:nil];            UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:paySalaryVC];            self.window.rootViewController = nav;        } else if ([shortcutItem.type isEqualToString:@"com.gonghuipay.gongfubao.myQRCode"]) {            // 进入我的二维码界面            GFBLog(@"我的二维码界面");        } else if ([shortcutItem.type isEqualToString:@"com.gonghuipay.gongfubao.RichScan"]){            // 进入扫一扫            GFBLog(@"进入扫一扫");            XZHScanCodeViewController *scanCodeVC = [[XZHScanCodeViewController alloc] init];            scanCodeVC.pushScanCodeType = MainPush;            UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:scanCodeVC];            self.window.rootViewController = nav;        }        return NO;    }      return YES   }
/** *  3D touch 快捷选项 */- (void) createShortcutItem {    // 创建系统风格的icon    UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"HomePage_Scan"];    UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"red-envelope"];    UIApplicationShortcutIcon *icon3 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"blackberry-qr-code-variant"];    //创建快捷选项    UIApplicationShortcutItem * item = [[UIApplicationShortcutItem alloc]initWithType:@"com.gonghuipay.gongfubao.RichScan" localizedTitle:@"扫一扫" localizedSubtitle:@"" icon:icon1 userInfo:nil];    UIApplicationShortcutItem * item1 = [[UIApplicationShortcutItem alloc]initWithType:@"com.gonghuipay.gongfubao.pay" localizedTitle:@"发工资" localizedSubtitle:@"" icon:icon2 userInfo:nil];    UIApplicationShortcutItem * item2 = [[UIApplicationShortcutItem alloc]initWithType:@"com.gonghuipay.gongfubao.myQRCode" localizedTitle:@"我的二维码" localizedSubtitle:@"" icon:icon3 userInfo:nil];    //添加到快捷选项数组    [UIApplication sharedApplication].shortcutItems = @[item, item1, item2];}
  1. 设置相应事件
// 3D Touch 响应事件- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem  completionHandler:(void(^)(BOOL succeeded))completionHandler{    //判断先前我们设置的唯一标识    if (shortcutItem) {        if ([shortcutItem.type isEqualToString:@"com.gonghuipay.gongfubao.pay"]) {            //  进入发工资界面            GFBLog(@"进入发工资界面");            XZHPaySalaryProjectVC *paySalaryVC = [[XZHPaySalaryProjectVC alloc] initWithNibName:@"XZHPaySalaryProjectVC" bundle:nil];            UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:paySalaryVC];            self.window.rootViewController = nav;        } else if ([shortcutItem.type isEqualToString:@"com.gonghuipay.gongfubao.myQRCode"]) {            // 进入我的二维码界面            GFBLog(@"我的二维码界面");            UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"LCMinePage" bundle:nil];            LCQRCodeInformationViewController *codeInformationVC = [storyboard instantiateViewControllerWithIdentifier:@"LCQRCodeInformationViewController"];            UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:codeInformationVC];            self.window.rootViewController = nav;        } else if ([shortcutItem.type isEqualToString:@"com.gonghuipay.gongfubao.RichScan"]){            // 进入扫一扫            GFBLog(@"进入扫一扫");            XZHScanCodeViewController *scanCodeVC = [[XZHScanCodeViewController alloc] init];            scanCodeVC.pushScanCodeType = MainPush;            UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:scanCodeVC];            self.window.rootViewController = nav;        }    }    if (completionHandler) {        completionHandler(YES);    }}

以上就完成了,可以测试

三、效果
这里写图片描述
简单吧····

四、总结
但这边有一个问题,就是第一次刚安装应用程序的时候, shortitemsmenu 启动不起来,需要启动下app 才可以。不懂原因,知道的可以告知下。

因公司项目测试的,无demo,不懂的可以发邮一起探讨 229201093@qq.com

参考链接:http://www.cnblogs.com/zhanglinfeng/p/5133939.html

最近在写Swift项目,后期有时间写一个Swift版本

0 0