如何在应用程序中添加 3D 触摸快速操作?就像在联系人中

Posted

技术标签:

【中文标题】如何在应用程序中添加 3D 触摸快速操作?就像在联系人中【英文标题】:How to add 3D touch quick actions inside an app? Like in contacts 【发布时间】:2016-02-11 05:54:15 【问题描述】:

是否有 API 可以在应用内显示强制触摸的快速操作菜单?当您向上滑动查看视图时,我只看到用于显示快速操作菜单的 API。但我想做一些类似apple 3D touch page的例子。

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

【问题讨论】:

嗨 nimish,你最后是怎么做到的?你介意提供一些代码吗?谢谢! 【参考方案1】:

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

UIViewControllerPreviewingDelegate 方法 previewingContext:viewControllerForLocation: 或者 您可以使用UITouchforcemaximumPossibleForce 属性来检测屏幕上施加的压力,并在特定压力水平后显示此自定义视图。

【讨论】:

【参考方案2】:

您可以尝试我自己的库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

【讨论】:

以上是关于如何在应用程序中添加 3D 触摸快速操作?就像在联系人中的主要内容,如果未能解决你的问题,请参考以下文章

3D Touch 快速操作无法快速运行 3

Html 表格在中间水平滚动,就像在触摸屏上一样

静音 3D 触控快速动作

如何在 iOS 应用程序的 UIApplicationShortcutIcons(3D touch) 中添加 4 个以上的快速操作项

如何在 3D 触摸窥视动作的预览动作中访问呈现视图控制器?

如何为 UITableView 索引事件添加操作 - 对于每个字母