3D Touch的簡單使用

這貨其實(shí)很簡單,我就簡單做個(gè)用法的解析。

首先,你要使用的話,你得在info.plist里面加入部分鍵值對,如下:

1.在info.plist里面配置所有items

UIApplicationShortcutItems

//山地 touch選項(xiàng)的數(shù)組(可以在info.plist里面寫,也可以在Appdelegate里面用代碼設(shè)置)

UIApplicationShortcutItemIconType//item的圖標(biāo)(貌似只能是系統(tǒng)的樣)

UIApplicationShortcutIconTypeSearch

UIApplicationShortcutItemTitle

訂單篩選

UIApplicationShortcutItemType//自定義的item的類型(相當(dāng)于一個(gè)cell的identifier),方便判斷點(diǎn)擊的那個(gè)item

$(PRODUCT_BUNDLE_IDENTIFIER).First

2.在info.plist里面配置一個(gè)item,在Appdelegate里面用代碼設(shè)置剩余的items

//先在info.plist里面設(shè)置一個(gè)

//定義一個(gè)@property(nonatomic,strong)UIApplicationShortcutItem*currentShortItem;? /*當(dāng)前點(diǎn)擊Touch Item*/

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {

// Override point for customization after application launch.

BOOLresult =YES;

//系統(tǒng)版本適配

if(IOS_VERSION<9.0)returnresult;

//判斷是否是從shortitem啟動(dòng)的程序

if(launchOptions[@"UIApplicationLaunchOptionsShortcutItemKey"]) {

_currentShortItem= launchOptions[@"UIApplicationLaunchOptionsShortcutItemKey"];

//這個(gè)返回值很重要、返回no,不會(huì)再調(diào)用performActionForShortcutItem這個(gè)回調(diào)方法

//result =NO;

}

//判斷是否已經(jīng)創(chuàng)建了shortitem、

NSArray*items = [UIApplicationsharedApplication].shortcutItems;

if(items.count==0) {

[selfcreateShortIcon];

}

returnresult;

}

//@TODO:創(chuàng)建其他的items

-(void)createShortIcon{

UIApplicationShortcutIcon*shortIcon1 = [UIApplicationShortcutIconiconWithType:UIApplicationShortcutIconTypeSearch];

UIApplicationShortcutItem*shortItem1 = [[UIApplicationShortcutItemalloc]initWithType:[NSStringstringWithFormat:@"%@.First",BundleId]localizedTitle:@"FirstItem"localizedSubtitle:nilicon:shortIcon1userInfo:nil];

UIApplicationShortcutIcon*shortIcon2=[UIApplicationShortcutIconiconWithType:UIApplicationShortcutIconTypeCompose];

UIApplicationShortcutItem*shortItem2=[[UIApplicationShortcutItemalloc]initWithType:[NSStringstringWithFormat:@"%@.Second",BundleId]localizedTitle:@"SecondItem"localizedSubtitle:nilicon:shortIcon2userInfo:nil];

[[UIApplicationsharedApplication]setShortcutItems:@[shortItem1,shortItem2]];

}

3.說完了定義些,先在來處理點(diǎn)擊后的事情:

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

//處理shortitem事件

if([shortcutItem.typeisEqualToString:[NSStringstringWithFormat:@"%@.First",BundleId]]) {

NSLog(@"First Item---");

}elseif([shortcutItem.typeisEqualToString:[NSStringstringWithFormat:@"%@.Second",BundleId]]){

NSLog(@"Second Item---");

}

}

歐拉!我沒有吹塞,就是這樣簡單!現(xiàn)在就只需要試試了!?。∈遣皇翘貏e激動(dòng)?當(dāng)然你得有個(gè)6s以上的iPhone。

哎呀!其實(shí)模擬器也可以的,當(dāng)然你得安裝一個(gè)插件哈:傳送

后繼更新:

現(xiàn)在加上在VC中使用3D Touch的方法。

在使用它之前呢,我們得將它和長按手勢區(qū)分開,我們在初始化的時(shí)候給當(dāng)前VC做一個(gè)檢測:

//檢測頁面是否處于3DTouch狀態(tài) 可以在知道它處于開啟狀態(tài)時(shí)將長按手勢什么的禁止掉(我一般在viewWillAppear里面調(diào)用該函數(shù))

- (void)check3DTouch{

if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {

[self registerForPreviewingWithDelegate:self sourceView:self.view];

NSLog(@"3D Touch 開啟");

}else{

}

}

然后我們在使用的VC里面實(shí)現(xiàn)<UIViewControllerPreviewingDelegate>協(xié)議,以及實(shí)現(xiàn)協(xié)議函數(shù)

//重按時(shí)顯示出的預(yù)覽界面

-(UIViewController *)previewingContext:(id)previewingContext viewControllerForLocation:(CGPoint)location{

//直接顯示預(yù)覽界面,這里可以高度自定義

return self.vc;

}

//繼續(xù)用力按執(zhí)行什么操作,這里是將預(yù)覽界面展示出來

-(void)previewingContext:(id)previewingContext commitViewController:(UIViewController *)viewControllerToCommit{

[self showViewController:self.vc sender:self];

}

最后一步就是你得在你彈出的那個(gè)預(yù)覽VC里面設(shè)置上滑顯示那些操作按鈕:

//重按顯示預(yù)覽界面時(shí),向上滑動(dòng)出現(xiàn)的菜單選擇、一定要在

//-(UIViewController *)previewingContext:(id)previewingContext viewControllerForLocation:(CGPoint)location

//回調(diào)返回的UIViewController中實(shí)現(xiàn)這個(gè)方法,不然無法顯示菜單選項(xiàng)

-(NSArray> *)previewActionItems{

UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"分享" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {

//點(diǎn)擊按鈕的響應(yīng)函數(shù)

}];

UIPreviewAction*action2=[UIPreviewActionactionWithTitle:@"收藏"style:UIPreviewActionStyleDefaulthandler:^(UIPreviewAction*_Nonnullaction,UIViewController*_NonnullpreviewViewController){

//點(diǎn)擊按鈕的響應(yīng)函數(shù)

}];

return @[action1, action2];

}

這樣就實(shí)現(xiàn)了完整的3D Touch的使用,簡單快捷,方便實(shí)例。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容