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

一、前言
因最近入手一个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
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

建古

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值