上下文菜单IBActions未在Xcode 7 Beta中触发

rho*_*mes 1 xcode ios xcode7

当我将现有的iOS app/WatchKit应用程序从Swift 1.x/WatchKit 1.x转换为Swift 2.0/WatchKit 2.0(beta)时,我最初在Xcode beta中发现了这个问题.一般问题:在模拟器中运行WatchKit App时,不会调用MenuItems的IBAction函数.刚刚遇到Xcode 7 beta 4的问题.

重现步骤:

  1. 在Xcode 7b3中创建一个新的"使用WatchKit app的iOS应用程序"项目.输入WatchKit App的Interface.storyboard的伴随视图模式.
  2. 您应该在实现WKInterfaceController的InterfaceController.swift文件旁边看到storyboard.
  3. 将"菜单"拖到故事板中的界面控制器上.那里应该有一个菜单项.
  4. 添加另一个菜单项.
  5. 将第一个项目的标题设置为"菜单A",并将其图像设置为"接受".
  6. 对第二个项目执行相同操作,但将其命名为"菜单B".
  7. 控制 - 从每个菜单项拖动到InterfaceController.swift并将相应的IBActions命名为指示来自哪个manu的东西.
  8. 将打印语句添加到willActivate函数以及每个IBAction.
  9. 使用模拟器在调试器中运行.
  10. 在它最终连接之后(在几次错误启动之后),在模拟器中多次选择菜单项.

预期结果: 我希望IBActions能够被调用.

实际结果: 未触发IBAction断点,也未激活IBAction print()语句.

版本: 7.0版beta 3(7A152u)

我搜索了developer.apple.com以及StackOverflow的论坛,没有发现这个问题,也没有在发行说明中.

rho*_*mes 5

好吧,事实证明"问题"有一个"解决方法".首先,我正在使用2010 MacBook Pro.在Xcode 6.x中,模拟器中的"强制触摸"是使用持续的"真正点击"完成的(即使您为触控板启用了单击,要获得强制触摸,您必须实际激活触摸板按).可以通过触控板上的敲击或短暂的"真正点击"来启动浅触摸.

在Xcode 7测试版上,手表模拟器的行为不再遵循这种范式; 大概是因为他们利用力量触摸新款Mac笔记本电脑.相反,要测试新Xcode 7 beta模拟器上的菜单,您必须在非强制触摸Mac上执行以下操作:

  1. 将Watch模拟器强制触摸切换为"深":硬件=>强制触摸压力=>深按(cmd-shift-2).
  2. "True click"界面视图以显示上下文菜单视图
  3. 将Watch模拟器强制触摸切换为"浅":硬件=>强制触摸压力=>浅压(cmd-shift-1).
  4. 菜单上的"真实点击"选择它.

请注意,即使在触控板首选项中启用,单击触摸也不适用于任何这些操作.还要注意当您无意中使用"深按"尝试选择菜单时的视觉反馈; 它看起来几乎就像你选择它一样!