Apple Watch (WatchKit) 推送动作
Posted
技术标签:
【中文标题】Apple Watch (WatchKit) 推送动作【英文标题】:Apple Watch (WatchKit) push action 【发布时间】:2014-11-26 23:05:11 【问题描述】:我正在为 Apple Watch 开发一个应用程序,我想使用在启动活动中展示的用户推入屏幕(而不是点击)的操作。你知道这叫什么吗?我如何访问它?
【问题讨论】:
【参考方案1】:您只能在该操作上显示一个菜单。您在 WKInterfaceController 上使用 addMenuItem 方法。
【讨论】:
【参考方案2】:您所指的手势称为Force Touch。
可以在第三方应用程序中使用 Force Touch 作为输入法。但是,您无法注册以接收 Force Touch 事件的通知;目前 WatchKit 中没有与 UIGestureRecogniser 等效的东西。
当您的 WatchKit 应用程序的当前屏幕中有一个上下文菜单时,操作系统会在用户启动强制触摸时自动激活它。您可以在 Apple Watch 模拟器中通过单击并按住鼠标来模拟这一点……即使在没有启用上下文菜单的屏幕上,甚至在启动 Force Touch 时,生成的动画也会清楚地显示出来。
要通过 Interface Builder 使用它,您只需:
-
在界面生成器中将菜单拖到相关的 Watch App 场景中。
将 1 到 4 个菜单项添加到菜单中,方法是将它们拖到菜单中。
为这些菜单项设置名称和图像。
将这些菜单项连接到 WatchKit 扩展中的 IBActions。
或者,您可以通过 WatchKit Extension 以编程方式设置和清除菜单项,例如 outlined in the WatchKit API documentation。有四个相关的 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
完整信息在Configuring the Contextual Menu in WatchKit 的 API 文档中。
当你第一次创建这些菜单时,尤其是在 Interface Builder 中创建时,你可能会觉得你肯定错过了一步,因为你不必将菜单连接到相当于力的东西触摸手势识别器,但是当您尝试它时,您会发现它有效。即使在 2015 年晚些时候我们有能力为 Watch 制作原生应用程序之后,这很可能仍将是第三方开发者必须强制触摸的唯一访问权限。
【讨论】:
以及如何为 38mm 和 42mm 指定不同的图像?【参考方案3】:它被称为上下文菜单。您可以使用 addMenuItem 或在情节提要中添加项目附带的菜单,然后添加其他项目。
【讨论】:
以上是关于Apple Watch (WatchKit) 推送动作的主要内容,如果未能解决你的问题,请参考以下文章
“WatchKit Simulator Actions”不适用于实际的 Apple Watch 设备
Apple Watch、WatchKit 和 NSUserDefaults [重复]
WatchKit-Programming-Guide-Apple-Watch开发指南官方翻译及总结