如何在应用内添加 3D touch 快速操作?喜欢联系人

How to add 3D touch quick actions inside an app? Like in contacts

是否有 API 可以在应用内强制触摸时显示快速操作菜单?我只看到 APIs 用于在您向上滑动速览视图时显示快速操作菜单。但我想做一些类似苹果 3D 触摸页示例的事情。

这是我想要实现的 3D touch quick actions menu on contacts on 6s

可能还有另一种解决方案,但我认为其中之一是您可以在检测到 3D 触摸时显示此自定义视图。您可以从

  • UIViewControllerPreviewingDelegate方法previewingContext:viewControllerForLocation: 要么 您可以使用 UITouchforcemaximumPossibleForce 属性来检测屏幕上施加的压力并在特定压力级别后显示此自定义视图。

您可以试试我自己的库 ActionsList,它的外观和感觉与 Apple 的快速操作菜单相同。

尚不支持 3D Touch,但它可以帮助您呈现与提供商屏幕截图相同的操作列表。

首先你应该创建列表。

如果您想从 UIButtonUIBarButtonItemUITabBarItem 中展示它,有用于创建列表的内置方法:

// element is UIButton, UIBarButtonItem or UITabBarItem
let list = element.createActionsList()

否则你应该使用ActionsListModel结构:

let list = ActionsListModel(senderView: viewThatInitiatedListPresenting,
                            sourceView: viewToPresentListFrom,
                            delegate: listDelegate)

然后将动作添加到列表中

list.add(action: ActionsListDefaultButtonModel(localizedTitle: "Create Alarm", 
                 image: UIImage(named: "Alarm clock"),
                 action: { action in
                     // You can use action's list property to control it

                     // - To dismiss
                     action.list?.dismiss()

                     // - To update action appearance
                     action.appearance.//anything
                     // Do not forget to reload actions to apply changes
                     action.list?.reloadActions()
          }))

之后你可以展示列表

list.present()

// Save list or it will be deallocated and not reachable outside of the scope it was created in
self.list = list