文章目录
  1. 1. 一、引言
  2. 2. 二、两种加入方式
    1. 2.1. 1.静态标签
    2. 2.2. 2.动态标签
  3. 3. 响应快捷入口

一、引言

3D Touch从官网的介绍来看,主要是三个功能:

  1. Home Screen Quick Actions (主屏幕快捷进入)
  2. peek and pop(预览试图)
  3. Force Properties(力度检测)
    我们要做的很简单,就是利用3D Touch的Home Screen Quick Actions在iPhone桌面图标加入强按的快捷入口。
    效果:

二、两种加入方式

1.静态标签

通过项目的plist文件进行入口配置。

必要设置:

  1. 添加UIApplicationShortcutItems数组
  2. 展开UIApplicationShortcutItems数组,添加一个字典
  3. 在字典下添加UIApplicationShortcutItemType(快捷入口的值)
  4. 在字典下添加UIApplicationShortcutItemTitle(快捷入口的标题)

可选项:
UIApplicationShortcutItemSubtitle 设置标签的副标题
UIApplicationShortcutItemIconType 设置标签Icon类型
UIApplicationShortcutItemIconFile 设置标签的Icon文件
UIApplicationShortcutItemUserInfo 设置信息字典(用于传值)

2.动态标签

动态标签其实就是通过代码添加,噢耶。不详细说了
上别人代码:

 UIApplicationShortcutItem * item = [[UIApplicationShortcutItem alloc]initWithType:@"two" localizedTitle:@"第二个标签" localizedSubtitle:@"看我哦" icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePlay] userInfo:nil];
    添加
    [UIApplication sharedApplication].shortcutItems = @[item];

响应快捷入口

AppDelegate在9.0中新增了一个快捷入口的回调, 类似于推送的回调:

-(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler{
if ([shortcutItem.type isEqualToString:@"first"]) {
NSLog(@"first");
}
else if ([shortcutItem.type isEqualToString:@"second"]){
NSLog(@"second");
}
completionHandler(YES);
}

此时didFinishLaunchingWithOptions需要返回NO,以免处理逻辑被反复回调

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    BOOL shouldPerformAdditionalDelegateHandling = YES;
    if ([launchOptions[UIApplicationLaunchOptionsShortcutItemKey] isKindOfClass:[UIApplicationShortcutItem class]]) {
    shouldPerformAdditionalDelegateHandling = NO;
    }


    return shouldPerformAdditionalDelegateHandling;
}
文章目录
  1. 1. 一、引言
  2. 2. 二、两种加入方式
    1. 2.1. 1.静态标签
    2. 2.2. 2.动态标签
  3. 3. 响应快捷入口