3D-Touch Home Screen Quick Actions 使用

1. 3D-Touch简单介绍

  3D-Touch是iPhone 6s推出的一种可以让你与手机进行互动的全新方式。这一次,iPhone 能够感应你按压屏幕的力度。除了轻点、轻扫、双指开合这些熟悉的 Multi?Touch 手势之外,3D Touch 还带来 Peek 和 Pop,为 iPhone 的使用体验开拓出全新的维度。而且,当你使用 3D Touch 时,iPhone 将回以轻微的触感,让你不仅能够看到按下屏幕的操作效果,还能感觉得到。

  3D-Touch含有3种feature功能,压力感应(Press Sensitivity)、Peek和Pop手势、快捷方式(Quick Actions)

2. 如果让模拟器支持3D-Touch

   目前官方文档还不支持3d-touch,可以借助github的开源项目,SBShortcutMenuSimulator(点击下载).

安装和使用也比较简单

  1. 安装 

    git clone https://github.com/DeskConnect/SBShortcutMenuSimulator.git
    cd SBShortcutMenuSimulator
    make
  2. 安装完,在SBShortcutMenuSimulator的目录执行以下方法

    xcrun simctl spawn booted launchctl debug system/com.apple.SpringBoard --environment DYLD_INSERT_LIBRARIES=$PWD/SBShortcutMenuSimulator.dylib
    xcrun simctl spawn booted launchctl stop com.apple.SpringBoard
  3. 使用

    // ‘com.x.x‘ 为程序的bundle id, id可以随便指定echo ‘com.xxx.xxx‘ | nc 127.0.0.1 8000

3. Quick Actions2种适配方法

  1. 静态定义

    静态定义常用的key:

UIApplicationShortcutItemType     //(必须使用) 用来区分与其他快速选项的分类
UIApplicationShortcutItemTitle    //(必须使用) 快速选项显示的标题
UIApplicationShortcutItemSubtitle  // 快速选项显示的子标题
UIApplicationShortcutItemIconType  // 图片类型由系统提供,大约提供了29种
UIApplicationShortcutItemIconFile  // 自定义的图标
UIApplicationShortcutItemUserInfo  // 附加信息(NSDictionary)

     静态设置在Info.plist文件中定义

<key>UIApplicationShortcutItems</key>
    <array>
        <dict>
            <key>UIApplicationShortcutItemIconType</key>
            <string>UIApplicationShortcutIconTypeBookmark</string>
            <key>UIApplicationShortcutItemTitle</key>
            <string>打开最后阅读的书籍</string>
            <key>UIApplicationShortcutItemType</key>
            <string>3dTouchOpenBookItem</string>
            <key>UIApplicationShortcutItemUserInfo</key>
            <dict>
                <key>shorcutKey</key>
                <string>shorcutValue</string>
            </dict>
        </dict>
        <dict>
            <key>UIApplicationShortcutItemIconType</key>
            <string>UIApplicationShortcutIconTypeSearch</string>
            <key>UIApplicationShortcutItemTitle</key>
            <string>搜索书架</string>
            <key>UIApplicationShortcutItemType</key>
            <string>3dTouchSearchItem</string>
        </dict>
    </array>

  2. 动态定义

- (void)initApplication3DTouch:(UIApplication *)application {

    NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] init];
    [userInfo setObject:@"哈哈" forKey:@"haha"];
    // 自定义获取本地的图片并传递一些参数
    UIMutableApplicationShortcutItem *itemTest = [[UIMutableApplicationShortcutItem alloc] initWithType:@"3" localizedTitle:@"标题" localizedSubtitle:@"副标题" icon:[UIApplicationShortcutIcon iconWithTemplateImageName:@"本地图片"] userInfo:userInfo];

    // 打开最后阅读的一本书
    UIApplicationShortcutIcon *openBook = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeBookmark];
    UIMutableApplicationShortcutItem *itemOpenBook = [[UIMutableApplicationShortcutItem alloc] initWithType:@"2" localizedTitle:@"打开最后阅读的书籍"];
    itemOpenBook.icon = openBook;

    // 找书
    UIApplicationShortcutIcon *searchBook = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeSearch];
    UIMutableApplicationShortcutItem *itemSearchBook = [[UIMutableApplicationShortcutItem alloc] initWithType:@"1" localizedTitle:@"搜索书架"];
    itemSearchBook.icon = searchBook;

    //
    application.shortcutItems = @[itemTest, itemOpenBook, itemSearchBook];
}

  

  3. 响应Quick Actions事件

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {

    if ([shortcutItem.type isEqualToString:@"1"]) {
        NSLog(@"搜索书架");
    } else if ([shortcutItem.type isEqualToString:@"3"]) {
        NSDictionary *dict = shortcutItem.userInfo;
        NSLog(@"dict为传递过来的参数");
    }
}

3. 备注

  1. 快捷标签最多可以创建四个,包括静态的和动态的. 静态的会显示在动态的前面

  2. 静态的可以在程序不打开的情况下显示,动态的不可以

  3. 关于如何动态的移除动态添加的Quick Actions   

application.shortcutItems = nil; // 尝试了一下,可以通过这个方式把动态quick action移除

  如果你不是在wb145230博客园看到本文,请点击查看原文.

时间: 2024-10-22 00:34:00

3D-Touch Home Screen Quick Actions 使用的相关文章

iOS9系列专题一——3D Touch

新的触摸体验--iOS9的3D Touch 一.引言 在iphone6s问世之后,很多果粉都争先要体验3D Touch给用户带来的额外维度上的交互,这个设计之所以叫做3D Touch,其原理上是增加了一个压力的感触,通过区分轻按和重按来进行不同的用户交互. 二.在模拟器上学习和测试3D Touch 3D Touch是一个很新颖的设计,可是苹果文档有言: With Xcode 7.0 you must develop on a device that supports 3D Touch. Simu

[转]3D Touch

iOS9的3D Touch 一.引言 在iphone6s问世之后,很多果粉都争先要体验3D Touch给用户带来的额外维度上的交互,这个设计之所以叫做3D Touch,其原理上是增加了一个压力的感触,通过区分轻按和重按来进行不同的用户交互. 二.在模拟器上学习和测试3D Touch 3D Touch是一个很新颖的设计,可是苹果文档有言: With Xcode 7.0 you must develop on a device that supports 3D Touch. Simulator in

3d touch 应用 2 -备用

一.引言 在iphone6s问世之后,很多果粉都争先要体验3D Touch给用户带来的额外维度上的交互,这个设计之所以叫做3D Touch,其原理上是增加了一个压力的感触,通过区分轻按和重按来进行不同的用户交互. 二.在模拟器上学习和测试3D Touch 3D Touch 是一个很新颖的设计,可是苹果文档有言: With Xcode 7.0 you must develop on a device that supports 3D Touch. Simulator in Xcode 7.0 do

iOS 3D Touch功能

新的触摸体验--iOS9的3D Touch 一.引言 在iphone6s问世之后,很多果粉都争先要体验3D Touch给用户带来的额外维度上的交互,这个设计之所以叫做3D Touch,其原理上是增加了一个压力的感触,通过区分轻按和重按来进行不同的用户交互. 二.在模拟器上学习和测试3D Touch 3D Touch 是一个很新颖的设计,可是苹果文档有言: With Xcode 7.0 you must develop on a device that supports 3D Touch. Sim

iOS 9之3D Touch

金田 北京时间9月10日凌晨, Apple在美国旧金山比尔格拉汉姆公民大礼堂(Bill Graham Civic Auditorium)召开新品发布会.本次着重介绍了3D Touch功能, 大体介绍一下: - 增强版的Force Touch(压力触控)技术,Force Touch之前被应用在于Apple Watch - 根据力度的不同,从而带来更多样化的用户体验.比如,用力按快进按钮会使快进的速度更快.用力度触摸代替了长按拖拽选项.用力按屏幕时用户可以自行调节应用界面等 - 在点击.滑动.缩放的

iOS9新特性-3D Touch

本文主要讲解3DTouch各种场景下的开发方法,开发主屏幕应用icon上的快捷选项标签(Home Screen Quick Actions),静态设置 UIApplicationShortcutItem ,动态添加.修改UIApplicationShortcutItem,peek和pop的实现. 一.3DTouch开发准备工作(让模拟器也支持 3DTouch 的解决办法) 需要支持3DTouch的设备,如iPhone6s或以上.iOS9或以上.Xcode7或以上,估计很多和我一样的屌丝还没有iP

3D touch在Unity3D中的使用

0.开篇: 3D touch随着iOS9发布,它并不是一个单独的技术,而是可以分为pressure sensitivity.quick action以及peek&pop.在官方的介绍中提到可以给游戏更好的体验,但是实际上个人感觉除了pressure sensitivity能够改变游戏的操作方式外,quick action以及peek&pop真心是为APP设计的. 1.pressure sensitivity的使用: 首先在unity的脚本中添加检查是否支持3D touch的函数,这个函数本

在iOS9中使用3D Touch

iOS9提供了四类API( Home Screen Quick Action . UIKit Peek & Pop . WebView Peek & Pop 和 UITouch Force Properties )用于操作3D Touch.不过无论使用哪一种API,首先需要做的事情是检查3D Touch是否可用. 检测是否支持3D Touch 在iOS9中提供如下的接口用于检查设备是否支持3D Touch: @property(nonatomic, readonly) UIForceTou

3D Touch介绍:电子秤App与快捷操作

随着iPhone6s与6s plus的到来,苹果给我们展现了一种全新的交互方式:重按手势.你可能知道,这个特性已经在Apple Watch和MacBook上推出了,不过那时叫Force Touch,就是字面上的意思,给用户的交互添加一种新的维度. 如果你很好奇iPhone的Force Touch为啥要更名为3D Touch,那告诉你吧,you’re not alone(译者注:请用MJ的调子唱出来…).不久前,之前也对这名字纠结不已的Craig Federighi(译者注:Apple高级副总裁)