1.什么是3D Touch?
3D Touch屬于一種人機(jī)交互的一種方式,具體點(diǎn)用戶與手機(jī)屏幕的一種交互方式。在3D Touch出現(xiàn)前看看現(xiàn)有的一些用戶與手機(jī)屏幕的交互方式有哪些?
現(xiàn)有的交互方式:點(diǎn)按,雙擊,長(zhǎng)按,捏合,旋轉(zhuǎn),拖動(dòng),輕掃,快速滑動(dòng)
官方介紹:iOS Human Interface GuidelinesBeta Gesture
總結(jié)以上的交互都是在一個(gè)二維的界面上根據(jù)接觸的區(qū)域、時(shí)間、速度、方向,次數(shù)等維度,計(jì)算得出一種用戶的手勢(shì)操作
3D Touch是從一個(gè)新的維度出創(chuàng)建一種交互方式
3D Touch是觸摸屏的壓力感應(yīng)功能。是在二維的Multi-Touch觸摸屏基礎(chǔ)上添加了可以對(duì)用戶按壓屏幕的力度大小作出響應(yīng)于反饋的功能。3D Touch不是Apple的一個(gè)使用壓力感應(yīng)的產(chǎn)品,之前已經(jīng)在MacBook和Apple Watch上使用,不過之前的叫Force Touch.Force Touch是3D Touch的雛形。他只可以區(qū)分輕觸和重壓。
官方介紹:iOS Human Interface GuidelinesBeta 3D Touch
這里提及一下Android平臺(tái)上的壓力感應(yīng)功能。華為 128GB Mate S支持Force Touch技術(shù),這是Force Touch 第一次應(yīng)用在手機(jī)(比蘋果還早,蘋果之前使用在了電腦上)。Synaptics(新思國(guó)際)提供完整的解決方案Clear Force。
2.3D Touch應(yīng)用場(chǎng)景分析
應(yīng)用外的快速導(dǎo)航
在桌面時(shí),用力按app icon,會(huì)彈出一個(gè)快速導(dǎo)航的列表,點(diǎn)擊相應(yīng)的選項(xiàng)會(huì)進(jìn)入相應(yīng)的頁(yè)面

應(yīng)用內(nèi)的預(yù)覽于選擇
某音樂類APP 首頁(yè)點(diǎn)擊一個(gè)歌單,會(huì)有這個(gè)歌單的預(yù)覽于一些操作

3.3D Touch Demo
以上講的都是一些感念于效果表現(xiàn),現(xiàn)在是代碼層面的分析。主要是以下四種情況:
Home Screen Quick Actions? (應(yīng)用外的快速導(dǎo)航)
Static quick actions靜態(tài)標(biāo)簽
Static quick actions are available to the userimmediately upon app installation. Define Home screen static quick actions in your app’sInfo.plistfile in theUIApplicationShortcutItemsarray.
就是在info.plist的文件中添加UIApplicationShortcutItems數(shù)組就可以使用了,具體數(shù)組里面的配置下面會(huì)有說明,還有一點(diǎn)需要強(qiáng)調(diào)的是,使用靜態(tài)標(biāo)簽是程序安裝以后就可以立即使用了。
UIApplicationShortcutItemType(required) 這個(gè)鍵值設(shè)置一個(gè)快捷通道類型的字符串
UIApplicationShortcutItemTitle(required) 這個(gè)鍵值設(shè)置標(biāo)簽的標(biāo)題
UIApplicationShortcutItemSubtitle 設(shè)置標(biāo)簽的副標(biāo)題
UIApplicationShortcutItemIconType 設(shè)置標(biāo)簽Icon類型
UIApplicationShortcutItemIconFile設(shè)置標(biāo)簽的Icon文件
UIApplicationShortcutItemUserInfo 設(shè)置信息字典(用于傳值)
Dynamic quick actions動(dòng)態(tài)標(biāo)簽
Dynamic quick actions are available to the userafter first launch. Define Home screen dynamic quick actions with theUIApplicationShortcutItem,UIMutableApplicationShortcutItem, andUIApplicationShortcutIconclasses. Add dynamic quick actions to your app’s shared UIApplication object using theshortcutItemsproperty.
動(dòng)態(tài)標(biāo)簽是在程序初始化之后,才可以去配置的,UIApplicationShortcutItem, UIMutableApplicationShortcutItem, and UIApplicationShortcutIcon classes這3個(gè)類創(chuàng)建一個(gè)標(biāo)簽,UIApplication的shortcutItems管理整個(gè)app的標(biāo)簽。
動(dòng)態(tài)標(biāo)簽需要注意的兩點(diǎn):1.動(dòng)態(tài)的標(biāo)簽修改不了已有的靜態(tài)標(biāo)簽2.動(dòng)態(tài)標(biāo)簽初始化一次以后會(huì)保留在shortcutItems不需要每次都創(chuàng)建
Home Screen Quick Actions?的樣式

圖標(biāo)在那邊展示是系統(tǒng)根據(jù)當(dāng)前app icon的位置決定的,會(huì)自動(dòng)調(diào)整,圖標(biāo)只能使用系統(tǒng)的圖片或者是打包在bundle中的圖片。
Home Screen Quick Actions?的響應(yīng)方法
類似推送,當(dāng)我們點(diǎn)擊標(biāo)簽進(jìn)入應(yīng)用程序時(shí),也可以進(jìn)行一些操作,我們可以在AppDelegate中增加了這樣一個(gè)方法,在方法中可以做一些頁(yè)面跳轉(zhuǎn)等需求:
- (void)application:(UIApplication*)application performActionForShortcutItem:(UIApplicationShortcutItem*)shortcutItem completionHandler:(void(^)(BOOL))completionHandler;
UIKit Peek and Pop
To supportpeek and popon 3D Touch-capable devices, the iOS 9 SDK includes:
New methods in theUIViewControllerclass forregisteringandunregisteringa view controller for participation in 3D Touch
New view controller protocols (UIViewControllerPreviewingDelegate) to support 3D Touch
To supportpeek quick actions, the iOS 9 SDK includes:
The newUIPreviewActionandUIPreviewActionGroupclasses
The newUIPreviewActionItemprotocol
增加了一個(gè)protocol UIViewControllerPreviewingDelegate
在UIViewController類中增加了注冊(cè)和取消注冊(cè)的Delegate的方法
具體看代碼demo
Web View Peek and Pop

導(dǎo)入WebKit的文件,
創(chuàng)建一個(gè)WKWebView對(duì)象,設(shè)置allowsLinkPreview=true
WKWebView和SFSafariViewController#importWKWebView *webView =
[[WKWebView alloc]initWithFrame:self.view.bounds];
[self.view addSubview:webView];
[webView loadRequest:
[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://www.baidu.com/"]]];
// 需要設(shè)置為true才有預(yù)覽的功能
webView.allowsLinkPreview = true;
safari瀏覽器
Force Properties in UITouch Objects
3D Touch在UITouch類中增加了兩個(gè)屬性force?和maximumPossibleForce
The force of the touch, where a value of 1.0 represents the force of an average touch (predetermined by the system, not user-specific). (read-only)
Force反應(yīng)當(dāng)前壓力的大小,1.0標(biāo)示平均值。如果使用 Apple Pencil時(shí),還需要計(jì)算altitudeAngle
The maximum possible force for a touch. (read-only)
maximumPossibleForce是Force的最大值
如果你監(jiān)控touchesBegan,touchesMoved,touchesEnded這3個(gè)放回就可以拿到UITouch,從而回到到這兩個(gè)屬性值。

自己寫的demo,文中的展示的程序也使用了apple文檔中的程序,以下的鏈接中找到。
寫這篇文章時(shí)引用的資料鏈接
2015年蘋果秋季新品發(fā)布會(huì)(中文翻譯)
一張圖讓你了解3D Touch與Force Touch區(qū)別
3D Touch開發(fā)初體驗(yàn)(模擬器使用3DTouch)