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];}
- 设置相应事件
// 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
- iOS9 3DTouch 新特性之实现过程—OC版
- iOS9新特性之实现3DTouch就是So easy(更新Swift 版 )
- iOS新特性实现3DTouch开发
- iOS9新特性之(OC及Swift)实现3D Touch
- iOS9 之3DTouch 入门
- iOS9新特性 3DTouch 开发教程全解(含源码)
- iOS9新特性 3DTouch 开发教程全解(含源码)
- iOS9新特性 3DTouch 开发教程全解(含源码)
- iOS9之新特性
- iOS9新特性之实现3D Touch就是So easy(更新Swift版)
- iOS9 新特性联系人Contact FrameWork---OC版
- iOS9 新特性联系人Contact FrameWork---OC版
- IOS9 3DTouch
- ios9新特性之关键字
- ios9新特性之关键字
- iOS9新特性之关键字
- iOS9新特性——3Dtouchaa
- iOS9 3DTouch 之 Home Screen Quick Actions
- ScrollView 里嵌套WebView,WebView不能上下滑动或卡顿
- 分拆素数和 hd 2098
- OnGlobalLayoutListener获得一个视图的高度
- 图片拉伸方法
- Java-Map
- iOS9 3DTouch 新特性之实现过程—OC版
- 学这些课程对编程有什么用
- leetcode submission/20160720(reverse string)
- [Android]fragment中getArguments为空的原因以及解决
- UVA 10025-The ? 1 ? 2 ? ... ? n = k problem
- NYOJ-单调递增最长子序列(两种算法)
- vim常用指令
- 美素数 hd 4548
- HDU 1142