你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS 3D touch 使用技巧

iOS 3D touch 使用技巧

編輯:IOS開發綜合
  • 第一個 在桌面中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

    1. 上一頁:
    2. 下一頁:
    蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
    Copyright © Ios教程網 All Rights Reserved