iOS开发iOS开发iOS学习笔记

3D Touch的简单使用

2016-08-17  本文已影响137人  晓龙歌

这货其实很简单,我就简单做个用法的解析。

首先,你要使用的话,你得在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的使用,简单快捷,方便实例。

上一篇 下一篇

猜你喜欢

热点阅读