【问题标题】:How to set button focus in SwiftUI?如何在 SwiftUI 中设置按钮焦点?
【发布时间】:2020-02-07 14:36:07
【问题描述】:

!!! TVOS!!!

我有按钮列表,它以某种方式自动聚焦该列表中的第一个按钮(加载视图时)。有什么方法可以使用SwiftUI 聚焦该列表中的另一个按钮?

我知道UIKit 中有preferredFocusedView,但我喜欢在SwiftUI 中这样做。

感谢您的建议!

【问题讨论】:

  • 我也想知道这个。我有导航栏,默认情况下第一个按钮会窃取焦点。我想将焦点切换到下面的Button

标签: swiftui tvos


【解决方案1】:

SwiftUI 2.0

注意:!!部分解决方案!!

经 Xcode 12b5 / tvOS 14 测试,以下方法仅适用于堆栈,不适用于 List/ScrollView(在任何测试组合中)。

无论如何,它适用于屏幕上的小按钮集,因此值得发布。

struct DemoPreferredFocusView: View {
    @Namespace var ns
    @Environment(\.resetFocus) var resetFocus
    @AppStorage("initialButton") var initialButton: Int = 3

    var body: some View {
        VStack {
            ForEach(0..<10, id: \.self) { i in
                Button(action: {
                    print(">> tapped \(i)")
                    self.initialButton = i
                }) {
                    Text("Button \(i)")
                }
                .prefersDefaultFocus(i == initialButton, in: ns)
            }.focusScope(ns)
        }
        .onAppear {
            DispatchQueue.main.async {
                self.resetFocus.callAsFunction(in: ns)
            }
        }
    }
}

【讨论】:

猜你喜欢
  • 2015-03-19
  • 1970-01-01
  • 1970-01-01
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-24
相关资源
最近更新 更多