专栏首页iOS DeveloperiOS9新特性之实现3D Touch就是So easy(更新Swift版)

iOS9新特性之实现3D Touch就是So easy(更新Swift版)

3D_Touch.jpg 10月19号,周末,起床去吃早餐,吃完回来顺便去沃尔玛逛逛,把晚上的菜给买了,逛着逛着就来到了卖苹果手机的柜台,可能职业病吧,?,随手玩了下最新出来的iPhone6s,看下它新出来的功能3D Touch,简单的使用了下挺难按出来的?,貌似要找找手感,现在主流的app 已经支持此功能了,于是想实现下次功能的想法在脑海里挥之不去,最大的遗憾是只能在iPhone6s以上机型上使用,貌似其他手机可以通过越狱实现这一有趣的功能。题外话有点多了。。。。 下面我们进入正题: 在网上找了下资料,貌似很少的,只找到一篇简单介绍的 地址:http://www.jianshu.com/p/74fe6cbc542b

当然根据这篇文章的资料,很难做出这个有趣的功能,至少我是这么认为。 于是发挥出我那无敌于世的搜索功能,终于还是让我找到了突破点。 首先我们需要在Info.plist文件中加上一项

<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中添加如下方法

OC版

- (void)application:(UIApplication *)application 
performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem
 completionHandler:(void(^)(BOOL succeeded))completionHandler{

}

Swift版

func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {

}

关于这个方法是干嘛的?在此大家应该都清楚了吧? 对没错,就是用来处理我们这个3D Touch触发事件的 我的Demo是这么写的,具体如下:

OC版

- (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:^{
            
        }];
    }
}

Swift版

func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {
        
        switch shortcutItem.type {
        case "-11.UITouchText.share":
                let items = ["hello 3D Touch"]
                let activityVC = UIActivityViewController(
                activityItems: items,
                applicationActivities: nil)
                self.window?.rootViewController?.presentViewController(activityVC, animated: true, completion: { () -> Void in
                
            })
        default:
            break
        }
    }

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

OC版

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

Swift版

if traitCollection.forceTouchCapability == UIForceTouchCapability.Available {

           NSLog(@"你的手机支持3D Touch!");
        }
        else {
            NSLog(@"你的手机暂不支持3D Touch!");
        }

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

share.png

好文推荐:Bison教你3分钟集成支付宝好友分享 技术交流群:511040024

推荐一款学习iOS开发的app_____|______| | 传送门 更多经验请点击

如对你有帮助,请不要吝惜你的star和喜欢哦!

技术交流群:534926022(免费) 511040024(0.8/人付费) 原文在:http://www.allluckly.cn/ 版权归©Bison所有 如需转载请保留原文超链接地址!否则后果自负!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Swift初探之纯代码写tabBar

    Bison
  • Bison眼中的iOS开发多线程是这样的(一)

    Bison
  • iOS开发之诱导用户为自己的App评论功能

    Bison
  • Python实现多进程/多线程同时下载单个文件

    本书81个实验项目可与董付国老师的《Python程序设计(第2版)》、《Python程序设计基础(第2版)》、《Python程序设计基础与应用》、《Python...

    Python小屋屋主
  • 研报:协同移动工作台期望很高, 但阻碍的原因很多

    T客汇官网:tikehui.com 撰文 |窦悦怡 ? 随着“互联网+”与传统行业融合,各企业都在努力向“以用户为中心”的运营模式转型,围绕用户主动提供线上线下...

    人称T客
  • python 标准库 sqlite3 介绍(一)

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的功能特点有:

    用户6021899
  • zabbix的boot.log占满根目录不能ssh连接

    今天上午准备登陆下测试环境的zabbix-server服务器查个东西,发现ssh连接不上,报"No space left on device"。

    有暗香盈袖
  • VC开发Windows客户端软件之旅——前言

            从第一次拖着行李入京找活,至今已工作若干年了。这些年一直追逐自己的梦想,跑过三个城市,换了三份工作,认识了很多业内的朋友。和朋友们闲聊时,发现很...

    方亮
  • Python爬取京东Iphone X用户评论并绘制词云

    目前京东商城只会展示商品的前100页评论,所以我们能爬取到的评论只有1000条。 不过如果区分下好/差/中评分别爬取的话,理论上应该能保存3000条评论。

    Awesome_Tang
  • 案例 | 盟广信息签约法大大电子合同,赋能公寓行业转型

    近日,第三方电子合同平台法大大正式和华住集团孵化的独立业务IT公司盟广信息达成合作,在服务长短租公寓高效运营的同时,共同赋能传统地产业务信息化转型。

    法大大电子合同

扫码关注云+社区

领取腾讯云代金券