是否可以在不偷看的情况下添加3D触摸?

时间:2018-05-29 09:31:00

标签: ios swift 3dtouch

我有一组可以切换的视图(按钮)。它们用作过滤器。让我们说它是一个公共交通应用程序,你会看到问题"你想带什么交通方式旅行?",你有三种选择:&#34 ;公共汽车","渡轮"和#34;训练"。您可以单击它们中的每一个来禁用或启用它们。

我希望实现3D触控其中一个功能,将特定按钮切换为on,将所有其他按钮切换为off

我在应用程序中使用了3D触摸的几个地方,但总是使用peek / pop。我在添加3D触摸方面苦苦挣扎,而无需在UIViewController - 函数中返回previewingContext。是否可以在3D触摸时简单地执行操作?

可以previewingContext(::) -> UIViewController?中执行我的操作,但我不想返回要查看的UIViewController。如果我返回nil,那么我就不会得到taptic(?)反馈。一旦用户"可能"就会调用此函数。在实际按下之前,先用力触摸。

1 个答案:

答案 0 :(得分:2)

事实证明,通过实施UIViewControllerPreviewingDelegate,3D触摸(或强制触摸或其他任何调用)不仅仅 。这个代表的工作是决定用peek / pop呈现什么,而peek和pop的核心功能可以通过普通UIGestureRecognizer访问。我按照this指南创建了自己的ForceGestureRecognizer,但决定继承UILongPressGestureRecognizer而不是UIGestureRecognizer(将其与现有函数结合使用)。 该指南以及this(使用UINotificationFeedbackGenerator创建小震动反馈)以及一些CGAffineTransform - 基于触摸力的变化确实使其变得完美。