3D Touch 使用:Quick Action(Short Cut)

       iPhone6S开始,苹果新增了3D Touch触控技术。在实际App开发过程中,3D Touch有两大类常见应用,第一类是重按App的icon可以显示快捷功能(Quick Action),第二类是在App中,选中某个内容,可以使用peek(轻按)进行预览,使用pop(重按)切换控制器,显示完整内容。下面介绍如何使用Quick Action功能。

一、案例展示

功能说明:

  • 点击icon可以显示quick action列表;
  • 每行quick action可以展示标题、简要说明以及一个icon;
  • 选择一个quick action,可以打开一个控制器,并提示;

效果图1

二、Info.plist配置

QuickAction可以通过直接配置Info.plist文件即可实现。在info.plist文件中,需要添加如下参数:

QQ20151113-0

参数说明:

  • UIApplicationShortcutItemType:该QuickAction的标示符,在整个工程中,必须唯一,相当于QuickAction的名称,通过该名称,识别用户做了哪个点击;
  • UIApplicationShortcutItemTitle:该QuickAction在界面上显示的主名称;
  • UIApplicationShortcutItemSubtitle:显示在QuickAction主名称下面的子名称;
  • UIApplicationShortcutItemIconType:该QuickAction的icon。
  • 可以配置多个QuickAction,如图所示,配置了两个,item0和item1。

其中,系统提供的UIApplicationShortcutItemIconType有如下类型:

  • UIApplicationShortcutIconTypeCompose,
  •     UIApplicationShortcutIconTypePlay,
  •     UIApplicationShortcutIconTypePause,
  •     UIApplicationShortcutIconTypeAdd,
  •     UIApplicationShortcutIconTypeLocation,
  •     UIApplicationShortcutIconTypeSearch,
  •     UIApplicationShortcutIconTypeShare,
  •     UIApplicationShortcutIconTypeProhibit       NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeContact        NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeHome           NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeMarkLocation   NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeFavorite       NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeLove           NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeCloud          NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeInvitation     NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeConfirmation   NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeMail           NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeMessage        NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeDate           NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeTime           NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeCapturePhoto   NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeCaptureVideo   NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeTask           NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeTaskCompleted  NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeAlarm          NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeBookmark       NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeShuffle        NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeAudio          NS_ENUM_AVAILABLE_IOS(9_1),
  •     UIApplicationShortcutIconTypeUpdate         NS_ENUM_AVAILABLE_IOS(9_1)

三、Appdelegate.m中实现代理方法

在Appdelegate中,添加如下方法,对不同的QuickAction进行响应。

  • // Called when the user activates your application by selecting a shortcut on the home screen,
  • // except when -application:willFinishLaunchingWithOptions: or -application:didFinishLaunchingWithOptions returns NO.
  • (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler NS_AVAILABLE_IOS(9_0) __TVOS_PROHIBITED;

根据shortcutItem对象的type属性,来区分不同的QuickAction。例如,当点击名为:shortCutAlert的QuickAction时,则创建一个HCAlertController类型的控制器对象,并显示。

  • -(void)application:(UIApplication *) application performActionForShortcutItem:(nonnull UIApplicationShortcutItem *)shortcutItem completionHandler:(nonnull void (^)(BOOL))completionHandler {
  •     //判断先前我们设置的唯一标识
  •     if([shortcutItem.type isEqualToString:@“shortCutShare”]){
  •         NSArray *arr = @[@“hello 3D Touch”];
  •         UIActivityViewController *vc = [[UIActivityViewController alloc]initWithActivityItems:arr applicationActivities:nil];
  •         //设置当前的VC 为rootVC
  •         [self.window.rootViewController presentViewController:vc animated:YES completion:^{
  •         }];
  •     }
  •     else if ([shortcutItem.type isEqualToString:@“shortCutAlert”]) {
  •         HCAlertController *alertVC = [[HCAlertController alloc] init];
  •         [self.window.rootViewController presentViewController:alertVC animated:YES completion:nil];
  •     }
  • }

四、HCAlertController的实现

新建一个控制器,当view显示时,出现一个alert提示

  • @implementation HCAlertController
  •  
  • -(void)viewDidLoad {
  •     [super viewDidLoad];
  •    
  •     self.view.backgroundColor = [UIColor whiteColor];
  • }
  • -(void)viewDidAppear:(BOOL)animated {
  •     UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@“3D Touch” message:@“你从3DTouch启动了控制器,点击OK返回根控制器” preferredStyle:UIAlertControllerStyleAlert];
  •     UIAlertAction *action = [UIAlertAction actionWithTitle:@“OK” style:UIAlertActionStyleDefault handler:nil];
  •     [alertVC addAction:action];
  •     [self presentViewController:alertVC animated:YES completion:nil];
  • } 
  • @end
分享到: 更多

发表评论

电子邮件地址不会被公开。 必填项已用*标注