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
时间: 03-22

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

从3D Touch 看 原生快速开发

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

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让用户可以在不离开当前环境的情况下预览一个内容以及执行相关的操作.元素通过在轻按时显示一个小的矩形视图(有时

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 2015-04-05 15:25 2482人阅读 评论(1) 收藏 举报开源框架 图像: 1.图片浏览控件MWPhotoBrowser       实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.      下载:https://github.com/mwaterfall/MWPhotoBrowser目前比较活跃的社区仍旧是Github,

iOS开发 非常全的三方库、插件、大牛博客等等

UI 下拉刷新 EGOTableViewPullRefresh- 最早的下拉刷新控件. SVPullToRefresh- 下拉刷新控件. MJRefresh- 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.具体使用看"使用方法". (国人写) XHRefreshControl- XHRefreshControl 是一款高扩展性.低耦合度的下拉刷新.上提加载更多的组件.(国人写) CBStoreHo

初识3D Touch

3D Touch  概述: 从.Net转来也快有半年之多了,从小生到现在也算是经历了无所bug了,不过还是打到不了Ios在我心目中的地位!!! 一.前言 在iphone6s问世之后,很多果粉都争先要体验3D Touch给用户带来的额外维度上的交互,这个设计之所以叫做3D Touch,其原理上是增加了一个压力的感触,通过区分轻按和重按来进行不同的用户交互.但是对于开发人员来说我们确实遇到了一个难题:xcode7是支持3D Touch开发的,可是模拟器并不支持这个手势 不过还好的是,在我们码农界的大

iOS开发之资料收集

github排名:https://github.com/trending, github搜索:https://github.com/search. 此文章转自github:https://github.com/Tim9Liu9/TimLiu-iOS UI 下拉刷新 EGOTableViewPullRefresh- 最早的下拉刷新控件. SVPullToRefresh- 下拉刷新控件. MJRefresh- 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者

iOS9系列专题一——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. Simu

iOS开发-常用第三方开源框架介绍

iOS开发-常用第三方开源框架介绍 图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. 下载:https://github.com/mwaterfall/MWPhotoBrowser 目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code.SourceForge等地方.由于Github社区太过主流,这里主要介绍一下G

转:常用的几个提高iOS开发效率的开源类库及工具

常用的几个提高iOS开发效率的开源类库及工具 iOS开发者 : 开发几个常用的开源类库及下载地址: 算上这个连接:http://wenku.baidu.com/view/bbeb0091dd88d0d233d46a00.html 1.json json编码解码2.GTMBase64 base64编码解码3.TouchXML xml解析4.SFHFKeychainUtils 安全保存用户密码到keychain中 5.MBProgressHUD 很棒的一个加载等待特效框架6.ASIHTTPReque