【问题标题】:How to implement 3D-Touch Peek-and-select?如何实现 3D-Touch Peek-and-select?
【发布时间】:2015-09-29 10:34:02
【问题描述】:

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

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

【问题讨论】:

  • 请考虑将我的答案标记为正确,以确保人们快速找到相关来源。谢谢!

标签: ios iphone cocoa-touch uikit 3dtouch


【解决方案1】:

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

目前没有公共 API 来做这些事情。请提交错误 报告这是否是您想在应用程序中执行的操作,并包括 您要做什么的具体细节。

因此目前无法使用官方 SDK。我提交了这个enhancement request radar,如果你也需要这个,我鼓励你欺骗它!

【讨论】:

    【解决方案2】:

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

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

    来源:Apple Developer Forum

    【讨论】:

      【解决方案3】:

      那些是UIPreviewActionItem

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

      这里有一个可以帮助你的 sn-p:(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: 委托方法..

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

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

      【讨论】:

      • 请仔细阅读问题。我指的不是标准的 Peek-and-Pop 预览,而是提到的应用程序中的特殊预览。标准预览不允许您在不松开手指的情况下选择动作。
      • 你将如何使用它来撰写邮件?我的预览控制器中有一个标准的 displayComposerSheet 方法,但是当我告诉操作这样做时,作曲家永远不会显示,因为该方法告诉它在该预览中启动,并且预览不再存在。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多