http://www.cocoachina.com/ios/20151027/13812.html

10月19号,周末,起床去吃早餐,吃完回来顺便去沃尔玛逛逛,把晚上的菜给买了,逛着逛着就来到了卖苹果手机的柜台,可能职业病吧,随手玩了下最新出来的iPhone6s,看下它新出来的功能3D Touch,简单的使用了下挺难按出来的,貌似要找找手感,现在主流的app 已经支持此功能了,于是想实现下次功能的想法在脑海里挥之不去,最大的遗憾是只能在iPhone6s以上机型上使用,貌似其他手机可以通过越狱实现这一有趣的功能。题外话有点多了。。。。

下面我们进入正题:

在网上找了下资料,貌似很少的,只找到一篇简单介绍的

地址:http://www.jianshu.com/p/74fe6cbc542b

当然根据这篇文章的资料,很难做出这个有趣的功能,至少我是这么认为。

于是发挥出我那无敌于世的搜索功能,终于还是让我找到了突破点。

首先我们需要在Info.plist文件中加上一项

1
2
3
4
5
6
7
8
9
10
11
[key]UIApplicationShortcutItems[/key]
    [array]
        [dict]
            [key]UIApplicationShortcutItemIconType[/key]
            [string]UIApplicationShortcutIconTypeShare[/string]
            [key]UIApplicationShortcutItemTitle[/key]
            [string]Share[/string]
            [key]UIApplicationShortcutItemType[/key]
            [string]-11.UITouchText.share[/string]
        [/dict]
    [/array]

在此讲解下其中都是些神马意思

UIApplicationShortcutItemIconType触发3D Touch时显示的图标类型

UIApplicationShortcutIconTypeShare显示分享的图标

当然肯定还可以选择其他的一些图标,在此不一一列举,因为我也才上手,不怕您笑话咱。

UIApplicationShortcutItemTitle显示名字的

UIApplicationShortcutItemType相当于项目中的Bundle Identifier唯一的,通过这个标示我们可以判断点相应的那一项触发相应的操作

可以多设置几个

到此Info.plist文件中我们已经设置完了,接下来我们应该咋整呢?

什么?问你们,你们居然不知道???

好吧,还是由我带领大家继续讲下一步该如何如何。。。

首先在我们AppDelegate.m中添加如下方法

1
2
3
4
- (void)application:(UIApplication *)application 
performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem
 completionHandler:(void(^)(BOOL succeeded))completionHandler{
}

关于这个方法是干嘛的?在此大家应该都清楚了吧?

对没错,就是用来处理我们这个3D Touch触发事件的

我的Demo是这么写的,具体如下:

1
2
3
4
5
6
7
8
9
10
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler{
    //判断先前我们设置的唯一标识
    if([shortcutItem.type isEqualToString:@"-11.UITouchText.share"]){
        NSArray *arr = @[@"hello 3D Touch"];
        UIActivityViewController *vc = [[UIActivityViewController alloc]initWithActivityItems:arr applicationActivities:nil];
        //设置当前的VC 为rootVC
        [self.window.rootViewController presentViewController:vc animated:YES completion:^{
        }];
    }
}

相信在场很多同僚都和我一样屌丝,还来不及去买iPhone6s导致我们无法去测试是否成功,下面我来带你们去解决该问题,虽然无法让你自己看到运行后的效果,但是判断下是否成功还是可以做到的,方法如下

1
2
3
4
5
6
if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {
      NSLog(@"你的手机支持3D Touch!");
    }
    else {
        NSLog(@"你的手机暂不支持3D Touch!");
    }

效果图给大家鉴赏一下哦!

iOS 9 新特性之实现 3D Touch的更多相关文章

  1. iOS 9应用开发教程之iOS 9新特性

    iOS 9应用开发教程之iOS 9新特性 iOS 9开发概述 iOS 9是目前苹果公司用于苹果手机和苹果平板电脑的最新的操作系统.该操作系统于2015年6月8号(美国时间)被发布.本章将主要讲解iOS ...

  2. iOS 8 新特性

    这篇文章会介绍iOS8开发相关的主要特性. App 插件 通过支持插件,iOS8让我们可以系统指定的区域进行扩展,也就是为用户的特定需求提供自定义的方法.例如:可以通过App插件帮助用户分享他们的内容 ...

  3. iOS 9 新特性

    这篇文章介绍了iOS9开发相关的简介,现在发布的设备都会搭载iOS9.这篇文章也列出了详细描述新特性的文章. iPad多线程增强 iOS9使用Slider Over, Split View, Pict ...

  4. iOS 7 新特性

      iOS7更新了很多引人注目的功能.用户界面完全重新设计了.iOS7为开发2D,2.5D游戏引入了全新的动画系统.加强多线程,点对点连接,以及许多其他重要的功能让iOS7成为有史以来最有意义的一次发 ...

  5. iOS 10 新特性 大汇总 及iOS 10 的一些小问题和 xcode 8 的新版本小问题

    iOS 10正式版是很值得升级的,特别是那些不打算购买iPhone 7的老用户,毕竟新系统在体验.流畅性上都做了一些升级. 1.开放电话接口 支持垃圾电话提醒 对于使用iPhone的国人来说,这个功能 ...

  6. Windows 10 新特性 -- Bing Maps 3D地图开发入门(一)

    本文主要内容是讲述如何创建基于 Windows Universal App 的Windows 10 3D地图应用,涉及的Windows 10新特性包括 Bing Maps 控件.Compiled da ...

  7. iOS开发——新特性OC篇&Swift 2.0新特性

    Swift 2.0新特性     转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...

  8. iOS开发——新特性OC篇&IOS9 系统新特性

    IOS9 系统新特性 2015年6月89号凌晨召开的WWDC 2015苹果开发者大会发布了全新的iOS 9系统,PC6小编今天给大家整理了这次iOS9的系统更新带来了哪些新的功能与升级,本次新功能一览 ...

  9. iOS开发——新特性OC篇&IOS9 SDK新特性

    iOS9 SDK新特性 WWDC 2015苹果开发者大会是移动开发者一年一度的盛会,InfoQ中文站除了第一时间整理Keynote内容分享给大家之外,还邀请了资深的一线开发者分享他们的收获.本文为王巍 ...

随机推荐

  1. win 7下安装mysql zip格式

    mysql 下载地址:https://dev.mysql.com/downloads/mysql/5.5.html#downloads 下载的mysql格式为zip: 下载完成放在除C盘以外的盘. 一 ...

  2. 微信小程序——tab导航栏

    wxml: <view class="tab">  <view class="tab-left" bindtap="tabFun&q ...

  3. Miller Rabin算法学习笔记

    定义: Miller Rabin算法是一个随机化素数测试算法,作用是判断一个数是否是素数,且只要你脸不黑以及常数不要巨大一般来讲都比\(O(\sqrt n)\)的朴素做法更快. 定理: Miller ...

  4. [Day2] Nginx静态文件

    ​上一节我们介绍了nginx的三个使用场景和一些配置语法参数,今天我们就用一章的内容来介绍一下Nginx作为静态资源服务器的配置和常见问题. 一. 简单的静态服务器 ​话不多说,直接上配置代码. se ...

  5. pytorch 多GPU处理过程

    多GPU的处理机制: 使用多GPU时,pytorch的处理逻辑是: 1.在各个GPU上初始化模型. 2.前向传播时,把batch分配到各个GPU上进行计算. 3.得到的输出在主GPU上进行汇总,计算l ...

  6. MySQL与Oracle差异函数对比

    ORACLE:select round(1.23456,4) value from dual MYSQL:select round(1.23456,4) value 2 abs(-1) abs(-1) ...

  7. Redis源码解析:25集群(一)握手、心跳消息以及下线检测

    Redis集群是Redis提供的分布式数据库方案,通过分片来进行数据共享,并提供复制和故障转移功能. 一:初始化 1:数据结构 在源码中,通过server.cluster记录整个集群当前的状态,比如集 ...

  8. android 数据绑定(3)自动更新UI

    1.官方文档 https://developer.android.com/topic/libraries/data-binding/observability 2.observable 属性 适合对象 ...

  9. PHP1.6--数组

    一.数组的键值操作函数 1.array_values() 函数作用是返回数组中所有元素的值,只有一个参数,规定传人给定数组,返回一个包含给定数组中所有值的数组,但不保留键名 被返回的数组将使用顺序的数 ...

  10. 【html、CSS、javascript-8】JavaScript作用域

    JavaScript的作用域一直以来是前端开发中比较难以理解的知识点,对于JavaScript的作用域主要记住几句话 一.JavaScript中无块级作用域 在Java或C#中存在块级作用域,即:大括 ...