這貨其實(shí)很簡(jiǎn)單,我就簡(jiǎn)單做個(gè)用法的解析。
首先,你要使用的話漾肮,你得在info.plist里面加入部分鍵值對(duì),如下:
1.在info.plist里面配置所有items
UIApplicationShortcutItems
//山地 touch選項(xiàng)的數(shù)組(可以在info.plist里面寫(xiě)茎毁,也可以在Appdelegate里面用代碼設(shè)置)
UIApplicationShortcutItemIconType//item的圖標(biāo)(貌似只能是系統(tǒng)的樣)
UIApplicationShortcutIconTypeSearch
UIApplicationShortcutItemTitle
訂單篩選
UIApplicationShortcutItemType//自定義的item的類(lèi)型(相當(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.說(shuō)完了定義些橡卤,先在來(lái)處理點(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---");
}
}
歐拉扮念!我沒(méi)有吹塞,就是這樣簡(jiǎn)單碧库!現(xiàn)在就只需要試試了9裼搿!谈为!是不是特別激動(dòng)?當(dāng)然你得有個(gè)6s以上的iPhone踢关。
哎呀伞鲫!其實(shí)模擬器也可以的,當(dāng)然你得安裝一個(gè)插件哈:傳送
后繼更新:
現(xiàn)在加上在VC中使用3D Touch的方法签舞。
在使用它之前呢秕脓,我們得將它和長(zhǎng)按手勢(shì)區(qū)分開(kāi)柒瓣,我們?cè)诔跏蓟臅r(shí)候給當(dāng)前VC做一個(gè)檢測(cè):
//檢測(cè)頁(yè)面是否處于3DTouch狀態(tài) 可以在知道它處于開(kāi)啟狀態(tài)時(shí)將長(zhǎng)按手勢(shì)什么的禁止掉(我一般在viewWillAppear里面調(diào)用該函數(shù))
- (void)check3DTouch{
if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {
[self registerForPreviewingWithDelegate:self sourceView:self.view];
NSLog(@"3D Touch 開(kāi)啟");
}else{
}
}
然后我們?cè)谑褂玫腣C里面實(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ù)覽界面展示出來(lái)
-(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è)方法磺平,不然無(wú)法顯示菜單選項(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的使用,簡(jiǎn)單快捷拐辽,方便實(shí)例拣挪。