我正在为 Apple Watch 开发一个应用程序,我想使用在用户推入屏幕(而不是点击)的启动事件中演示的操作。你知道这叫什么以及我如何访问它吗?
3 回答
您只能在该操作上显示菜单。您在 WKInterfaceController 上使用 addMenuItem 方法。
您所指的手势称为Force Touch。
可以在第三方应用程序中使用 Force Touch 作为输入法。但是,您无法注册以接收 Force Touch 事件的通知;目前 WatchKit 中没有与 UIGestureRecogniser 等效的东西。
当您的 WatchKit 应用程序的当前屏幕中有一个上下文菜单时,它会在用户启动强制触摸时由操作系统自动激活。您可以在 Apple Watch 模拟器中通过单击并按住鼠标来模拟这一点……即使在没有启用上下文菜单的屏幕上,甚至在启动 Force Touch 时,生成的动画也会清楚地显示出来。
要通过 Interface Builder 使用它,您只需:
- 在界面生成器中将菜单拖到相关的 Watch App 场景中。
- 通过将菜单项拖动到菜单中,将一到四个菜单项添加到菜单中。
- 为这些菜单项设置名称和图像。
- 将这些菜单项连接到 WatchKit 扩展中的 IBActions。
或者,您可以通过 WatchKit 扩展程序以编程方式设置和清除菜单项,如WatchKit API 文档中所述。有四个相关的 WKInterfaceController 方法。在斯威夫特:
func addMenuItemWithItemIcon(_ itemIcon: WKMenuItemIcon,
title title: String,
action action: Selector)
func addMenuItemWithImageNamed(_ imageName: String,
title title: String,
action action: Selector)
func addMenuItemWithImage(_ image: UIImage,
title title: String,
action action: Selector)
func clearAllMenuItems()
在 Objective-C 中:
- (void)addMenuItemWithItemIcon:(WKMenuItemIcon)itemIcon
title:(NSString *)title
action:(SEL)action
- (void)addMenuItemWithImageNamed:(NSString *)imageName
title:(NSString *)title
action:(SEL)action
- (void)addMenuItemWithImage:(UIImage *)image
title:(NSString *)title
action:(SEL)action
- (void)clearAllMenuItems
完整信息在用于在 WatchKit 中配置上下文菜单的 API 文档中。
第一次创建这些菜单时,尤其是在 Interface Builder 中创建时,您可能会觉得您一定错过了一步,因为您不必将菜单连接到相当于强制触摸手势识别器的东西,但是当您尝试时,您会发现它有效。即使在 2015 年晚些时候我们有能力为 Watch 制作原生应用程序之后,这很可能仍然是第三方开发人员必须强制触摸的唯一访问权限。
它被称为上下文菜单。您可以使用 addMenuItem 或在情节提要中添加项目附带的菜单,然后添加其他项目。