1

我有一组可以切换的视图(按钮)。它们用作过滤器。假设它是一个公共交通应用程序,您会看到“您想乘坐哪种交通工具?”的问题,您会得到三个选项:“公共汽车”、“轮渡”和“火车”。您可以单击它们中的每一个来禁用或启用它们。

我想实现对其中一个进行 3D 触摸的功能,这会将特定按钮切换为on,并将所有其他按钮切换为off

我在应用程序中的一些地方使用了 3D-touch,但总是使用 peek/pop。我正在努力添加 3D-touch 而无需UIViewControllerpreviewingContext-function 中返回 a 。3D触摸时是否可以简单地执行一个动作?

可以在 中执行我的操作previewingContext(::) -> UIViewController?,但我不想返回一个 UIViewController 被偷看。如果我 return nil,那么我不会得到 taptic(?) 反馈。一旦用户“可能”强制触摸,这个函数就会被调用,在实际按下之前一点。

4

1 回答 1

3

因此,事实证明 3D-touch(或 force-touch 或其他任何名称)不仅可以通过UIViewControllerPreviewingDelegate. 该委托的工作是决定使用 peek/pop 呈现什么,而 peek 和 pop 的核心功能可以通过普通的UIGestureRecognizer. 我按照指南创建了自己的 ForceGestureRecognizer,但决定子类UILongPressGestureRecognizer化而不是UIGestureRecognizer(将其与现有函数结合起来)。该指南以及指南(使用创建小震动反馈UINotificationFeedbackGenerator)以及CGAffineTransform基于触摸力的一些更改确实使其完美。

于 2018-05-29T12:12:50.717 回答