這貨其實很簡單,我就簡單做個用法的解析。
首先,你要使用的話,你得在info.plist里面加入部分鍵值對,如下:
1.在info.plist里面配置所有items
UIApplicationShortcutItems
//山地 touch選項的數組(可以在info.plist里面寫,也可以在Appdelegate里面用代碼設置)
UIApplicationShortcutItemIconType//item的圖標(貌似只能是系統的樣)
UIApplicationShortcutIconTypeSearch
UIApplicationShortcutItemTitle
訂單篩選
UIApplicationShortcutItemType//自定義的item的類型(相當于一個cell的identifier),方便判斷點擊的那個item
$(PRODUCT_BUNDLE_IDENTIFIER).First
2.在info.plist里面配置一個item,在Appdelegate里面用代碼設置剩余的items
//先在info.plist里面設置一個
//定義一個@property(nonatomic,strong)UIApplicationShortcutItem*currentShortItem;? /*當前點擊Touch Item*/
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
// Override point for customization after application launch.
BOOLresult =YES;
//系統版本適配
if(IOS_VERSION<9.0)returnresult;
//判斷是否是從shortitem啟動的程序
if(launchOptions[@"UIApplicationLaunchOptionsShortcutItemKey"]) {
_currentShortItem= launchOptions[@"UIApplicationLaunchOptionsShortcutItemKey"];
//這個返回值很重要、返回no,不會再調用performActionForShortcutItem這個回調方法
//result =NO;
}
//判斷是否已經創建了shortitem、
NSArray*items = [UIApplicationsharedApplication].shortcutItems;
if(items.count==0) {
[selfcreateShortIcon];
}
returnresult;
}
//@TODO:創建其他的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.說完了定義些,先在來處理點擊后的事情:
-(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---");
}
}
歐拉!我沒有吹塞,就是這樣簡單!現在就只需要試試了!!!是不是特別激動?當然你得有個6s以上的iPhone。
哎呀!其實模擬器也可以的,當然你得安裝一個插件哈:傳送
后繼更新:
現在加上在VC中使用3D Touch的方法。
在使用它之前呢,我們得將它和長按手勢區分開,我們在初始化的時候給當前VC做一個檢測:
//檢測頁面是否處于3DTouch狀態 可以在知道它處于開啟狀態時將長按手勢什么的禁止掉(我一般在viewWillAppear里面調用該函數)
- (void)check3DTouch{
if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {
[self registerForPreviewingWithDelegate:self sourceView:self.view];
NSLog(@"3D Touch 開啟");
}else{
}
}
然后我們在使用的VC里面實現<UIViewControllerPreviewingDelegate>協議,以及實現協議函數
//重按時顯示出的預覽界面
-(UIViewController *)previewingContext:(id)previewingContext viewControllerForLocation:(CGPoint)location{
//直接顯示預覽界面,這里可以高度自定義
return self.vc;
}
//繼續用力按執行什么操作,這里是將預覽界面展示出來
-(void)previewingContext:(id)previewingContext commitViewController:(UIViewController *)viewControllerToCommit{
[self showViewController:self.vc sender:self];
}
最后一步就是你得在你彈出的那個預覽VC里面設置上滑顯示那些操作按鈕:
//重按顯示預覽界面時,向上滑動出現的菜單選擇、一定要在
//-(UIViewController *)previewingContext:(id)previewingContext viewControllerForLocation:(CGPoint)location
//回調返回的UIViewController中實現這個方法,不然無法顯示菜單選項
-(NSArray> *)previewActionItems{
UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"分享" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
//點擊按鈕的響應函數
}];
UIPreviewAction*action2=[UIPreviewActionactionWithTitle:@"收藏"style:UIPreviewActionStyleDefaulthandler:^(UIPreviewAction*_Nonnullaction,UIViewController*_NonnullpreviewViewController){
//點擊按鈕的響應函數
}];
return @[action1, action2];
}
這樣就實現了完整的3D Touch的使用,簡單快捷,方便實例。