美文网首页
3D Touch 进阶

3D Touch 进阶

作者: 歪笔书生_ | 来源:发表于2017-08-22 10:04 被阅读0次

说是进阶,其实是把未讲完的3D Touch用法讲完。除了最简单的Qucik Action,3D Touch最常见的用法就是peek和pop。顾名思义,peek是在按压后弹出一个viewController,而pop是在peek之后持续用力按压,跳转到弹出的viewController。

3D Touch的注册

触发3D Touch之前需要注册,可以注册到当前viewController里任意一个UIView及其子类上。

//判断是否支持3D 
Touchself.traitCollection.forceTouchCapability==UIForceTouchCapabilityAvailable
//注册[selfregisterForPreviewingWithDelegate:selfsourceView:self.view];

sourceView就是注册的可以触发3D Touch的View;

peek

当前viewController继承协议UIViewControllerPreviewingDelegate

实现UIViewControllerPreviewingDelegate的协议方法

-(UIViewController*)previewingContext:(id)previewingContext viewControllerForLocation:(CGPoint)location

location是触发区域,这里return需要peek的viewController

pop

在peek的基础上,实现协议方法:

-(void)previewingContext:(id)previewingContext commitViewController:(UIViewController*)viewControllerToCommit{    [selfshowViewController:viewControllerToCommit sender:self];}

peek上拉菜单

在peek的viewController里实现如下方法:

- (NSArray> *)previewActionItems {UIPreviewAction*action1 = [UIPreviewActionactionWithTitle:@"Aciton1"style:UIPreviewActionStyleDefaulthandler:^(UIPreviewAction* _Nonnull action,UIViewController* _Nonnull previewViewController) {NSLog(@"Aciton1");    }];UIPreviewAction*action2 = [UIPreviewActionactionWithTitle:@"Aciton2"style:UIPreviewActionStyleDefaulthandler:^(UIPreviewAction* _Nonnull action,UIViewController* _Nonnull previewViewController) {NSLog(@"Aciton2");    }];NSArray*actions = @[action1,action2];returnactions;}

也可以在UIViewControllerPreviewingDelegate的第一个协议方法里写业务逻辑:

vc.actions= actions
- (NSArray> *)previewActionItems{returnself.actions;}

监控压力值

API提供了相关的方法来监控压力值:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent*)event {
//touches是所有设置了3D Touch的对象
NSArray*arrayTouch = [touches allObjects];
UITouch*touch = (UITouch*)[arrayTouch firstObject];
//可以通过tag来找到是哪个view
if(touch.view.tag==001)
  {NSLog(@"压力值为%f",touch.force);}
}

结语

关于3D Touch的用法这两篇文章已经有了基本的介绍。其实稍微留意一下可以发现,许多应用对3D Touch已经有了很好的支持,例如微博,知乎...通过压力值的监控,3D Touch还能发掘出其他更深层次的玩法。

相关文章

网友评论

      本文标题:3D Touch 进阶

      本文链接:https://www.haomeiwen.com/subject/cavkdxtx.html