3D Touch的简单使用

作者: 晓龙歌 | 来源:发表于2016-08-17 09:53 被阅读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的使用,简单快捷,方便实例。

    相关文章

      网友评论

        本文标题:3D Touch的简单使用

        本文链接:https://www.haomeiwen.com/subject/ggrmsttx.html