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(點擊下載).
安裝和使用也比較簡單
git clone https://github.com/DeskConnect/SBShortcutMenuSimulator.gitcd SBShortcutMenuSimulatormake
xcrun simctl spawn booted launchctl debug system/com.apple.SpringBoard --environment DYLD_INSERT_LIBRARIES=$PWD/SBShortcutMenuSimulator.dylibxcrun simctl spawn booted launchctl stop com.apple.SpringBoard
// '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>
<dict>
<key>UIApplicationShortcutItemIconFile</key>
<string>dl_d.png</string>
<key>UIApplicationShortcutItemTitle</key>
<string>熱門活動</string>
<key>UIApplicationShortcutItemType</key>
<string>QuickActionActivityItem</string>
</dict>
</array>
ps : 如果使用 UIApplicationShortcutItemIconFile, UIApplicationShortcuIconType將不起作用,使用參考上面紅色字體的地址
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博客園看到本文,請點擊查看原文.
新聞熱點
疑難解答