电话,提醒和地图使用不同的3D-Touch Peek UI,允许一次选择一个动作。例如,强行按下提醒并一次性选择“一天提醒我”,而不释放手指。它在视觉上与使用UIViewControllerPreviewing
API的标准3D Touch预览不同,因为它会在左对齐文本旁边显示自定义图标。
我找不到使用官方API执行此操作的方法。我是否遗漏了某些内容或确实是私有API?
答案 0 :(得分:3)
我也在Apple Developer Forums上提出了我的问题并收到了Apple的回复:
目前没有公共API可以执行这些操作。请提交bug 报告是否这是您想要在您的应用中执行的操作,并包括 您正在寻找的具体细节。
因此目前无法使用官方SDK。我提交了这个enhancement request radar,如果你需要的话我鼓励你欺骗它!
答案 1 :(得分:2)
对于未来的读者,Apple对此问题的回答是:
目前没有公共API可以执行这些操作。如果您希望在应用中执行此操作,请提交错误报告,并提供您希望执行的操作的具体详细信息。
答案 2 :(得分:-1)
这些是UIPreviewActionItem
。
覆盖previewingContext:viewControllerForLocation:
后,您还可以覆盖- (NSArray<id<UIPreviewActionItem>> *)previewActionItems
,这样您就可以指定快速操作。
这是一个可以帮助你的片段:(related tutorial)
- (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];
}
Apple文档:
此属性用于预览(peek)视图控制器 你出现在你的实施中 previewingContext:viewControllerForLocation:delegate method ..
实施此方法以为此类预览提供快速操作。 当用户在预览上向上滑动时,系统会显示这些内容 预览下方工作表中的快速操作项。
此方法的默认实现返回一个空数组。