今天还有额外的3D Touch收获呢~~
原以为3D Touch 技术仅限于应用的图标呢,结果发现并不是我想的那样简单呢。
在视图控制器中使用3D Touch需要做一个判断,也就是要区分长按手势与3D Touch的区别。
首先定义一个全局变量,_longPress,然后初始化:

不用去关心longPressDo这个方法我们做了什么,一个空的方法而已,我们只是为了将longPress手势拿出来做区别而已。
然后我在屏幕中间位置,垂直依次摆开三张图片。
接下来是进行3D Touch的环境监测(硬件是否支持,长按手势要不要响应事件):

然后就是3D Touch的响应事件了(完整版):

看起来是不是有点复杂?删繁就简的话,应该就是这样:

这里的WQLViewController是一个简单的继承于UIViewController的自定义的视图控制器而已。
完整版的响应事件,是做了数据源的判断,实现了展示数据与重按数据的一致性。
此外,不得不提的一点是:对于界面是TableView的时候,我们可以如下操作
location = [self.view convertPoint:location toView:_tableView];
NSIndexPath *indexPath = [_tableView indexPathForRowAtPoint:location];
此外,我们还可以再多做点什么,我们可以再在展示的界面中,添加一个底部的弹框。
我们去WQLViewController中,重写这么个方法:

这样我们就可以看到底部的操作弹框了。
好了,话不多说,看效果:
主界面是这样的:

(其实底部还有很大一片空白,被我截图时舍其了)
重按时的效果是这样的:

看到图片顶部的白色箭头了吗?
向上滑动一下的效果为:

终于看到我们在WQLViewController写的数组了。
加油~
网友评论