3D Touch — Peak&Pop功能
在我以前的文章中,我写了关于在您的应用中采用UIApplicationShortcutItems的文章。 现在是时候实现Peak&Pop了-3d Touch提供的一项功能。
开始吧
首先,我们需要检查我们的设备是否支持强制触摸事件。 然后,如果我们的设备熟悉强制触摸,则可以轻松注册UIViewController
的强制触摸事件。 看一下这个片段:
第二种方法负责一个称为Pop的事件。 当3d touch机制检测到您强烈按下从viewControllerForLocation
方法返回的ViewController
,它将调用该UIViewController
并将其作为viewControllerToCommit
给第二个viewControllerToCommit
previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController)
函数。
重要的是,当
viewControllerForLocation
返回nil
, 将不会调用 第二个函数viewControllerToCommit
。
在此方法中,我们可以显示viewControllerToCommit
或执行其他操作,例如,为触摸的视图添加动画。
实作
假设您有UIViewController
,其中包含两个UIImageViews
,其中包含漂亮的苹果图像。 对于此控制器,我们要实现3d Touch Peak&Pop功能。
在viewDidLoad()
函数中,为强制触摸事件注册我们的控制器。
很好,是吗?
结论
我不喜欢确定用户触摸哪个视图的方法。 检查一个点并为此计算位置并不是很好。 实现视图的3d触摸机制的另一种更好的方法可能是:通过某些属性(例如3dTouchGestureRecognizerDelegate
扩展UIView
类,然后在UIViewControllerPreviewingDelegate
实现某些方法。 然后,我们不必检查视图是否被触摸,因为在委托方法上,触摸的视图可以作为方法参数传递。 gestureRecognizer
熟悉的东西。 也许在将来的iOS更新中,API会更改吗? 综上所述, UIViewControllerPreviewing
允许我们创建非常漂亮的功能,我强烈建议您使用它并改善您的应用程序!
您可以在我的GitHub存储库中找到示例应用程序的整个实现。
感谢您的阅读,很快再见!
关于我
我是波兰格但斯克的软件开发人员。 大多数情况下都使用iOS,但我对其他任何技术,框架和挑战都持开放态度。 如果您喜欢我的帖子,请随时在Twitter上关注我并阅读我的个人博客。