我不能使用
UIApplication.sharedApplication().beginIgnoringInteractionEvents()
在 WatchKit 扩展中,我有错误:
'sharedApplication()' is unavailable: Use view controller based solutions where appropriate instead.
有其他选择吗?
简短的回答是:不,没有。
长答案:
请记住,扩展不是在手表上执行的,而是在您的手机上执行的。因此,无论如何,如果您打电话UIApplication.sharedApplication()
,它会在您的手机上返回您的分机应用程序!您在分机中所做的一切都是在您手机上操作分机的东西。唯一的例外是 WatchKit 方法。甚至它们基本上都是被转换成指令的调用,这些指令通过蓝牙发送来告诉手表该做什么。任何时候您都不能编写在手表上执行的代码!
您无法控制手表如何处理您发送给它的指令。您基本上充当与客户端交谈的服务器,并且您无法控制客户端。你应该尽可能少地发送指令,一旦你发送它们,你的任务就完成了,剩下的就看手表了。
话虽如此,您应该仔细规划您的 UI,使您不需要任何操纵事件传递的调用。您应该专注于简单的“如果用户点击 x 我做 y”交互。
要记住的另一件事是,您的扩展程序无法与您的主要 iOS 应用程序通信。您可以在您的 iOS 应用程序和手表扩展程序之间创建一个共享应用程序组以在它们之间共享数据,但是您不能直接与您的应用程序通信。如果您想使用应用程序逻辑的一部分,请将相关模块提取到框架中(这在 Xcode 6 中变得非常容易)并在您的应用程序和扩展程序中使用该框架。