这货其实很简单,我就简单做个用法的解析。
首先,你要使用的话,你得在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的使用,简单快捷,方便实例。