如何在SwiftUI中使UIViewRepresentable专注于tvOS?

时间:2020-04-23 18:12:40

标签: swiftui tvos apple-tv uiviewrepresentable

标题说明了一切-我无法专注于tvOS上的SwiftUI中的UIViewRepresentable。任何符合View协议的视图都可以毫无问题地聚焦,但是UIViewRepresentableUIViewControllerRepresentable都不能。

有什么想法吗?

此代码有效:

struct ContentView: View {
    var body: some View {
        Text("Hello, World!")
            .focusable()
            .onExitCommand {
                print("Menu button pressed")
        }
    }
}

这不是:

struct ContentView: View {
    var body: some View {
        ViewRepresentable()
            .focusable()
            .onExitCommand {
                print("Menu button pressed")
        }
    }
}

struct ViewRepresentable: UIViewRepresentable {
    func makeUIView(context: Context) -> UIView {
        let view = UIView()
        view.backgroundColor = .red

        return view
    }

    func updateUIView(_ uiView: UIView, context: Context) {

    }
}

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要创建一个覆盖canBecomeFocused的UIView子类以返回true。如果您想响应焦点,您可能还想覆盖didUpdateFocus(in:with:)。

这里提供了一个实用程序类作为参考,让我拥有可聚焦的UIView,并响应远程滑动和单击。

df<-data.frame(x=1:5)
df$y<-df$x**2

pl<-ggplot(df,aes(x=x,y=x)) +
     geom_point()
pl