iOS开发--3D Touch的基本使用

1.桌面快捷菜单项

效果如图:

桌面快捷菜单

点击之后的效果如图:

点击桌面快捷菜单的效果

接下来看下具体实现:
1).在-application:didFinishLaunchingWithOptions:
方法中用-setShortcutItems:方法来添加快捷菜单项。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    //3D Touch按压程序图标的快捷项    //快捷菜单的图标    UIApplicationShortcutIcon *icon1=[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeCaptureVideo];    UIApplicationShortcutIcon *icon2=[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd];    UIApplicationShortcutIcon *icon3=[UIApplicationShortcutIcon iconWithTemplateImageName:@"search"];    //快捷菜单    UIApplicationShortcutItem *item1=[[UIApplicationShortcutItem alloc]initWithType:@"1"                                                                     localizedTitle:@"嘿嘿"                                                                  localizedSubtitle:nil                                                                               icon:icon1                                                                           userInfo:nil];    UIApplicationShortcutItem *item2=[[UIApplicationShortcutItem alloc]initWithType:@"1"                                                                     localizedTitle:@"呵呵"                                                                  localizedSubtitle:@"干嘛去洗澡"                                                                               icon:icon2                                                                           userInfo:nil];    UIApplicationShortcutItem *item3=[[UIApplicationShortcutItem alloc]initWithType:@"1"                                                                     localizedTitle:@"搜索"                                                                  localizedSubtitle:nil                                                                               icon:icon3                                                                           userInfo:nil];    //设置app的快捷菜单    [[UIApplication sharedApplication] setShortcutItems:@[item1,item2,item3]];    //导航    self.window.rootViewController=[[UINavigationController alloc]initWithRootViewController:[ViewController new]];    return YES;}

2).在-application:performActionForShortcutItem:completionHandler:方法中实现点击快捷菜单的方法:

//3D Touch按压程序图标的快捷项时触发的方法-(void)application:(UIApplication )application performActionForShortcutItem:(UIApplicationShortcutItem )shortcutItem completionHandler:(void (^)(BOOL))completionHandler{    NSString title;    if([shortcutItem.localizedTitle isEqualToString:@"嘿嘿"])    {        [email protected]"嘿嘿";    }    else if([shortcutItem.localizedTitle isEqualToString:@"呵呵"])    {        [email protected]"呵呵";    }    else if([shortcutItem.localizedTitle isEqualToString:@"搜索"])    {        [email protected]"搜索";    }    //这里就弹个框子意思一下    //由于UIAlertView在iOS 9被废弃,因此选用UIAlertController    UIAlertController alertController=[UIAlertController alertControllerWithTitle:@"提示"                                                                           message:[NSString stringWithFormat:@"你点击了“%@”",title]                                                                    preferredStyle:UIAlertControllerStyleAlert];    UIAlertAction action=[UIAlertAction actionWithTitle:@"知道了"                                                   style:UIAlertActionStyleDefault                                                 handler:^(UIAlertAction  action) {                                                     [alertController dismissViewControllerAnimated:YES completion:nil];                                                 }];    [alertController addAction:action];    [self.window.rootViewController presentViewController:alertController                                                 animated:YES                                               completion:nil];}

2.程序内的3DTouch按压操作:

表视图

3DTouch按压的时候生成的预览

peek时上拉出现的菜单

1).首先,实现3DTouch的视图控制器要遵守:
UIViewControllerPreviewingDelegate协议,它有2个required级别的协议方法:
-previewingContext:viewControllerForLocation:
以及
-previewingContext:commitViewController:

2).检测3DTouch是否可用,并注册3DTouch:

检测3D Touch是否可用

-(BOOL)is3DTouchAvailiable{ if(self.traitCollection.forceTouchCapability==UIForceTouchCapabilityAvailable)        return YES;    return NO;}

注册3DTouch

if([self is3DTouchAvailiable])    {        [self registerForPreviewingWithDelegate:self sourceView:self.view];    }

3).实现协议方法:

-(UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location{    NSIndexPath *indexPath=[_tbVew indexPathForRowAtPoint:CGPointMake(location.x, location.y-64)];    if(indexPath)    {        DetailViewController *detail=[[DetailViewController alloc]init];        detail.title=_dataArray[indexPath.row];        //detail.preferredContentSize=CGSizeMake(300, 300);        __weak typeof(self) wkSelf=self;        //------------上拉时的菜单-------------------        //置顶及其点击逻辑        UIPreviewAction *topAction=[UIPreviewAction actionWithTitle:@"置顶" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * action, UIViewController * previewViewController) {            [wkSelf.dataArray exchangeObjectAtIndex:indexPath.row withObjectAtIndex:0];            [wkSelf.tbVew reloadData];            [wkSelf showAlert:@"提示" body:@"已置顶"];        }];        //删除及其点击逻辑        UIPreviewAction *deleteAction=[UIPreviewAction actionWithTitle:@"删除" style:UIPreviewActionStyleDestructive handler:^(UIPreviewAction *action, UIViewController * previewViewController) {            [wkSelf.dataArray removeObjectAtIndex:indexPath.row];            [wkSelf.tbVew reloadData];            [wkSelf showAlert:@"警告" body:@"已删除"];        }];        //传递上拉菜单项给detail        [email protected][topAction,deleteAction];        return detail;    }    return nil;}-(void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit{    [self showViewController:viewControllerToCommit sender:self];}

4).要previewing的视图控制器必须实现:
-(NSArray<id<UIPreviewActionItem>> *)previewActionItems方法,该方法定义了peek时上拉出来的菜单:

/**peek时上拉出来的菜单*/-(NSArray<id<UIPreviewActionItem>> *)previewActionItems{    return self.actions;}

https://github.com/whj111/3D_Touch_Demo
时间: 2024-10-17 05:32:59

iOS开发--3D Touch的基本使用的相关文章

IOS 实现3D Touch在tableView的简单应用(swift版)

之前记录过OC版实现3D Touch功能的小小演示,最近无事整整swift,也弄个swift版的3D Touoch... 上代码. 一.3D Touch重按主屏icon出现快捷标签有两种添加方式: 1.静态添加,在工程中的info.plist文件中添加,这种方式添加的标签安装后就能显示 2.动态添加,通过代码动态添加快速入口.这种方式添加的标签,必须先运行一次App才会出现. func application(application: UIApplication, didFinishLaunch

Android 7.1.1 之实现 3D Touch

转载请注明出处:http://blog.csdn.net/yyh352091626/article/details/68962736 Shortcut概念 具体实现 BuildConfig 配置 静态配置 动态配置 创建 删除或禁用 更新 返回栈问题 Shortcut概念 Shortcut 是Android-25(Android 7.1)新增的一项类似iOS的 3D Touch 功能的快捷方式组件,但是有着不同的表现形式,因为Android在硬件上不支持触摸压力感应,所以表现形式为长按,而iOS

iOS开发之 3D Touch 开发

在App 的开发中对于开发人员来说新设备以及新功能的适配无疑是一个很苦逼的事.在今年九月份iPhone 6S 以及 6S+ 出来之后,新的功能 3D Touch又是一个比较头疼的事.刚刚看到的时候以为是比较麻烦的东西 看着开发文档就头大(本撸主英语水平有限).但是看完官方文档之后感觉也不是很麻烦.所以就自己写了一个Demo 供大家吐槽和狂喷. 我感觉  3D Touch  的使用和  UITabBar  差不多还是一个比较简单的东西,几乎是拿过来就能用的东西. 一. 给桌面 Icon 添加 3D

从3D Touch 看 原生快速开发

全新的按压方式苹果继续为我们带来革命性的交互:Peek和Pop,Peek 和 Pop 让你能够预览所有类型的内容,甚至可对内容进行操作,却不必真的打开它们.例如,轻按屏幕,可用 Peek 预览收件箱中的每封邮件.如果要打开其中一封,只需按压时继续稍微用力,即可用Pop点开邮件. 3D Touch随着iPhone一起出现, 3D Touch是苹果硬件和软件的完美结合,3D Touch也是因此才成功的. 3D Touch仅仅有硬件条件是不够的,可以很明确地告诉大家,苹果在软件方面下了很多功夫. 3D

iOS 3D Touch功能

新的触摸体验--iOS9的3D Touch 一.引言 在iphone6s问世之后,很多果粉都争先要体验3D Touch给用户带来的额外维度上的交互,这个设计之所以叫做3D Touch,其原理上是增加了一个压力的感触,通过区分轻按和重按来进行不同的用户交互. 二.在模拟器上学习和测试3D Touch 3D Touch 是一个很新颖的设计,可是苹果文档有言: With Xcode 7.0 you must develop on a device that supports 3D Touch. Sim

iOS 9之3D Touch

金田 北京时间9月10日凌晨, Apple在美国旧金山比尔格拉汉姆公民大礼堂(Bill Graham Civic Auditorium)召开新品发布会.本次着重介绍了3D Touch功能, 大体介绍一下: - 增强版的Force Touch(压力触控)技术,Force Touch之前被应用在于Apple Watch - 根据力度的不同,从而带来更多样化的用户体验.比如,用力按快进按钮会使快进的速度更快.用力度触摸代替了长按拖拽选项.用力按屏幕时用户可以自行调节应用界面等 - 在点击.滑动.缩放的

iOS 3d touch设计的秘密

相信很多苹果的用户对这个3d touch这个功能都不是很了解,而苹果设备上的这个交互设计主要是给用户带来更多的互动维度.那苹果公司为啥要这个交互功能,那我们首先来解析一下这个设计的用法:在支持的设备上,人们可以通过按压主屏幕应用程序的图标快速选择特定的操作.在应用程序中,人们可以使用压力来获得项目的预览,可以在一个单独的视图中打开该项目,并获得相关的操作. Peek和PopPeek可以让用户在没有打开应用的情况下预览的应用所支持的快捷操作.轻压有支持Peek的应用图标可以显示一个矩形的Pop视图

《iOS Human Interface Guidelines》——3D Touch

3D Touch 3D Touch让iOS 9的用户多了一个交互的维度.在支持的设备上,人们可以通过按压主屏幕上的app图标来快速地选择其特有的操作.在app内,人们可以使用多种压力来获取一个内容的预览.在另一个视图打开内容以及获取相关的操作.(查看Adopting 3D Touch on iPhone来学习更多关于在你的代码中支持3D Touch的内容.) Peek 和 Pop Peek让用户可以在不离开当前环境的情况下预览一个内容以及执行相关的操作.元素通过在轻按时显示一个小的矩形视图(有时

3D Touch开发技巧的笔记

iPhone6s以及iPhone6s plus搭载iOS9,有一个新功能叫做3D Touch,这个功能有很大的用处,关键是要会用,这给交互方式又多了一个新的选择和思考,比如说游戏中的额外控制选项.绘图应用中的细粒度(fine-grained)控制,甚至是用来替代我们在 iOS 设备中使用过的长按操作(tap-and-hold)的极佳选择. 开发者可以通过非常简单的 API 来使用 3D Touch ,从根本上来说,也就是UITouch 的一个简单的新属性. override func touch