iOS 3D touch 使用技巧


第一個 在桌面中3d Touch 打開菜單  

由於本人純屬代碼黨,本次實現方法也只使用代碼實現

到達到這個效果並不難,只需要在appdelegate中實現以下代碼即可 ,當然也有缺點,就是這個app沒運行過的話是用不了3dtouch呼出菜單

 1 - (void)setting3DTouchModule{
 2     // 判斷系統版本大於9.0再設置 (若不判斷 在低版本系統中會崩潰)
 3     if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0){
 4         
 5         // 自定義圖標
 6         UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"圖片名稱"];
 7         
 8         UIApplicationShortcutItem *shortItem1 = [[UIApplicationShortcutItem alloc] initWithType:@"item類型1" localizedTitle:@"item標題1" localizedSubtitle:@"子標題1" icon:icon1 userInfo:nil];
 9         
10         UIApplicationShortcutItem *shortItem2 = [[UIApplicationShortcutItem alloc] initWithType:@"item類型2" localizedTitle:@"item標題2" localizedSubtitle:@"子標題2" icon:[UIApplicationShortcutIcon iconWithType: UIApplicationShortcutIconTypeCompose] userInfo:nil];
11         
12         // item 數組
13         NSArray *shortItems = [[NSArray alloc] initWithObjects: shortItem1,shortItem2, nil];
14         
15         // 設置按鈕
16         [[UIApplication sharedApplication] setShortcutItems:shortItems];
17     }
18     
19 }
20 // 通過3dtouch菜單啟動 后回調
21 - (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler{
22     // 可以通過標題 字符串判斷 來確認 是哪個item
23     if ([shortcutItem.localizedTitle  isEqualToString: @"item標題1"]){
24 
25     }
26 }

didFinishLaunchingWithOptions方法中執行 

    [self setting3DTouchModule];

即可

 

第二種效果   觸發機制 參考 微信朋友圈 3dtouch打開圖片 

這個由於涉及到tableview /collectionview中cell的重用機制(如果你只給某個view加入 3dtouch手勢的話可以無視), 需要對cell做一定的自定義操作

我這里以collectionview為例,在回調cell 的方法里,將當前controller對象傳入cell中進行 3DTouch事件注冊

而正常添加3dtouch只需要下面這一句代碼

[self registerForPreviewingWithDelegate:self sourceView:cell.contentView];  //正常添加3DTouch事件

 

添加3DTouch的controller 要遵循UIViewControllerPreviewingDelegate協議

然后實現 兩個代理方法

- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit{
    // 打開詳情頁觸發
    if (viewControllerToCommit){
        [self showViewController:viewControllerToCommit sender:self];
    }
}
- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location{
     // 這里要返回要打開的viewController
     return nil;  
}

具體實現 可以參考我的demo

 

再者就是下面的按鈕

加入購物車 這個按鈕是需要我們在 回調的那個controller中實現以下代碼

1 - (NSArray<id<UIPreviewActionItem>> *)previewActionItems{
2     UIPreviewAction *itemA = [UIPreviewAction actionWithTitle:@"加入購物車" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
3         NSLog(@"你要做的操作");
4     }];
5     return @[itemA];
6 }

具體請參考demo

http://files.cnblogs.com/files/n1ckyxu/IOS_3DTouch_Demo.zip


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM