答案 0 :(得分:9)
<强>更新强>
您可以在iOS 10上复制此效果。有一组称为UIPreviewInteraction
和UIPreviewInteractionDelegate
的新API,可以为窥视/弹出交互启用自定义演示。我强烈建议从今年的WWDC观看A Peek at 3D Touch。
原始答案
查看iOS Runtime Headers,有一个名为UIPreviewPresentationController
的课程。那是负责 peeks 的控制器。在其中,有对称为leadingPreviewAction
和trailingPreviewAction
的对象的引用。它们具有处理边缘约束和中心的相应属性。通过使用术语前导和尾随(如在自动布局中)来判断,这些可能对应于左/右操作项。
这是推测,但我认为这些相关的私有类(_UIPreviewQuickActionView
)控制着您正在寻找的行为。那些现在不可用。
同样,UIPreviewAction
的文档说:
当用户向上滑动时,预览操作或查看快速操作会显示在下方。窥视快速操作通常会选择指向您应用的深层链接,并具有标题,样式和处理程序。
答案 1 :(得分:2)
要使用 Peek Quick Actions ,您的detailledViewControler(或您命名的任何内容)应该覆盖previewActionItems
,如下所示:
lazy var previewActions: [UIPreviewActionItem] = {
func previewActionForTitle(title: String, style: UIPreviewActionStyle = .Default) -> UIPreviewAction {
return UIPreviewAction(title: title, style: style) { previewAction, viewController in
guard let detailViewController = viewController as? DetailViewController,
item = detailViewController.detailItemTitle else { return }
print("\(previewAction.title) triggered from `DetailViewController` for item: \(item)")
}
}
let action1 = previewActionForTitle("Default Action")
let action2 = previewActionForTitle("Destructive Action", style: .Destructive)
let subAction1 = previewActionForTitle("Sub Action 1")
let subAction2 = previewActionForTitle("Sub Action 2")
let groupedActions = UIPreviewActionGroup(title: "Sub Actions…", style: .Default, actions: [subAction1, subAction2] )
return [action1, action2, groupedActions]
}()
override func previewActionItems() -> [UIPreviewActionItem] {
return previewActions
}