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

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

2015-11-03 20:04 435 查看
首先我们需要在Info.plist文件中加上一项

<key>UIApplicationShortcutItems</key>
<array><dict><span style="font-family: Arial, Helvetica, sans-serif;"><key>UIApplicationShortcutItemIconType</key><string>UIApplicationShortcutIconTypeShare</string></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><key>UIApplicationShortcutItemTitle</key><string>Share</string></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><key>UIApplicationShortcutItemType</key><string>-11.UITouchText.share</string></dict></array></span>


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

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

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

UIApplicationShortcutItemTitle显示名字的

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

到此Info.plist文件中我们已经设置完了,接下来我们应该咋整呢? 什么?问你们,你们居然不知道???

好吧,还是由我带领大家继续讲下一步该如何如何。。。 首先在我们AppDelegate.m中添加如下方法

OC版

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


Swift版

funcapplication(application: UIApplication, performActionForShortcutItemshortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) ->Void) {  }


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

OC版

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItemcompletionHandler:(void(^)(BOOL succeeded))completionHandler{     
//判断先前我们设置的唯一标识if([shortcutItem.typeisEqualToString:@"-11.UITouchText.share"])
{         
NSArray *arr = @[@"hello 3D Touch"]; 
UIActivityViewController *vc = [[UIActivityViewControlleralloc]initWithActivityItems:arrapplicationActivities:nil];            //设置当前的VC 为rootVC         
[self.window.rootViewControllerpresentViewController:vcanimated:YES completion:^{          
}];     
}


Swift版

funcapplication(application: UIApplication, 
performActionForShortcutItemshortcutItem: UIApplicationShortcutItem, 
completionHandler: (Bool) ->Void) {          
switchshortcutItem.type 
{         
case"-11.UITouchText.share": 
let items = ["hello 3D Touch"]                 
letactivityVC = 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版

iftraitCollection.forceTouchCapability == UIForceTouchCapability.Available {
NSLog(@"你的手机支持3D Touch!");         
}else { 
 <span style="font-family: Arial, Helvetica, sans-serif;"> NSLog(@"你的手机暂不支持3D Touch!");        </span>
<span style="font-family: Arial, Helvetica, sans-serif;"> }</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: