9

电话、提醒事项和地图使用不同的 3D-Touch Peek UI,允许一次性选择操作。例如,强制按下提醒并一次性选择“提醒我一天”,而不松开手指。它在视觉上也与使用UIViewControllerPreviewingAPI 的标准 3D Touch 预览不同,因为它在左对齐文本旁边显示自定义图标。

在此处输入图像描述

我找不到使用官方 API 的方法。我错过了什么还是这确实是一个私有 API?

4

3 回答 3

3

我也在Apple Developer Forums上问过我的问题,并收到了 Apple 的回复:

目前没有公共 API 来做这些事情。如果您想在您的应用程序中执行此操作,请提交错误报告,并包含您要执行的操作的具体详细信息。

所以目前无法使用官方SDK。我提交了这个增强请求雷达,如果你也需要这个,我鼓励你欺骗它!

于 2015-10-12T20:43:18.357 回答
2

对于未来的读者,Apple 对这个问题的回答是:

目前没有公共 API 来做这些事情。如果您想在您的应用程序中执行此操作,请提交错误报告,并包含您要执行的操作的具体详细信息。

资料来源:苹果开发者论坛

于 2015-10-08T11:12:36.757 回答
-1

那些是UIPreviewActionItem

覆盖后previewingContext:viewControllerForLocation:,您还可以覆盖- (NSArray<id<UIPreviewActionItem>> *)previewActionItems,这将允许您指定快速操作。

这是一个可以帮助您的片段:(相关教程

- (NSArray<id<UIPreviewActionItem>> *)previewActionItems
{
    UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"Action 1" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"Action 1 triggered");
    }];

    UIPreviewAction *action2 = [UIPreviewAction actionWithTitle:@"Destructive Action" style:UIPreviewActionStyleDestructive handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"Destructive Action triggered");
    }];

    UIPreviewAction *action3 = [UIPreviewAction actionWithTitle:@"Selected Action" style:UIPreviewActionStyleSelected handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"Selected Action triggered");
    }];

    return @[action1, action2, action3];
}

苹果文档:

此属性与您在 previewingContext:viewControllerForLocation: 委托方法的实现中呈现的预览(peek)视图控制器一起使用。

实施此方法可为此类预览提供快速操作。当用户在预览上向上滑动时,系统会在预览下方的表格中显示这些快速操作项。

此方法的默认实现返回一个空数组。

于 2015-10-01T18:27:23.577 回答