0

我设置了一个基本的 TVML 应用程序。目前简单的事件(例如按钮按下)是通过 JavaScript (TVJS) 处理的。

当用户按下一个按钮(通过 TVML 模板提供)时,我希望一些代码在 Swift 中运行,而不是操作 UI 元素。

最好的方法是什么?

4

1 回答 1

2

您可以使用如下 TVApplicationControllerDelegate 中的 evaluateAppJavaScriptIn 方法并在其中编写相应的 swift 方法;(迅速的一面)

// MARK: TVApplicationControllerDelegate
func appController(_ appController: TVApplicationController, evaluateAppJavaScriptIn jsContext: JSContext){
    let debug : @convention(block) (String!) -> Void = {
        (string : String!) -> Void in
        #if DEBUG
            print("[log]: \(string!)\n")
        #endif
    }
    jsContext.setObject(unsafeBitCast(debug, to: AnyObject.self), forKeyedSubscript: "debug" as (NSCopying & NSObjectProtocol)!)
}

之后,您可以像这样从 TVJS 调用此方法;(js侧)

debug('Hello from js to swift...');
于 2016-10-15T13:10:40.523 回答