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上关注我并阅读我的个人博客。