如何在应用程序中添加 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:
或者
您可以使用UITouch
的force
和maximumPossibleForce
属性来检测屏幕上施加的压力,并在特定压力水平后显示此自定义视图。
【讨论】:
【参考方案2】:您可以尝试我自己的库ActionsList,它的外观和感觉与 Apple 的快速操作菜单相同。
它尚不支持 3D Touch,但它可以帮助您呈现与提供程序屏幕截图相同的操作列表。
首先你应该创建列表。
如果您想从UIButton
、UIBarButtonItem
或UITabBarItem
中展示它,则有用于创建列表的内置方法:
// 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 触摸快速操作?就像在联系人中的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 应用程序的 UIApplicationShortcutIcons(3D touch) 中添加 4 个以上的快速操作项