您的位置:首页 > 移动开发 > Swift

iOS9新特性之(OC及Swift)实现3D Touch

2016-09-08 16:36 183 查看
在网上找了下资料,貌似很少的,只找到一篇简单介绍的 

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

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

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

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


在此讲解下其中都是些神马意思 
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: { () -> Voidin 
                          })        

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!");      

}

有Phone6s
的童鞋赶紧去试试3D
Touch吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  app ios swift 3d 应用