当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift Optional prefersDefaultFocus(_:in:)用法及代码示例


实例方法

prefersDefaultFocus(_:in:)

表示默认情况下视图应该接收给定命名空间的焦点。

声明

func prefersDefaultFocus(
    _ prefersDefaultFocus: Bool = true,
    in namespace: Namespace.ID
) -> some View

返回值

一个修改后的视图,设置它是否更喜欢默认聚焦。

参数

prefersDefaultFocus

一个布尔值,指示此视图是否默认接收焦点。默认值 true 使视图默认获得焦点。

namespace

与此视图首选默认焦点的焦点范围关联的命名空间。

详述

当没有其他视图具有焦点时,此修饰符设置初始焦点首选项。随时使用环境值EnvironmentValues/resetFocus 强制重新评估默认焦点。

以下 tvOS 示例在 VStack 中显示了三个按钮,分别标记为 “1”、“2” 和 “3”。默认情况下,“1” 按钮将获得焦点,因为它是堆栈中的第一个子项。但是,prefersDefaultFocus(_:in:) 修饰符允许按钮 “3” 改为接收默认焦点。一旦按钮可见,用户可以向下移动并聚焦“重置为默认焦点”按钮。当用户激活此按钮时,它使用 ResetFocusAction 重新评估 mainNamespace 中的默认焦点,这会将焦点返回到按钮 “3”。


struct ContentView: View {
    @Namespace var mainNamespace
    @Environment(\.resetFocus) var resetFocus


    var body: some View {
        VStack {
            Button ("1") {}
            Button ("2") {}
            Button ("3") {}
                .prefersDefaultFocus(in: mainNamespace)
            Button ("Reset to default focus") {
                resetFocus(in: mainNamespace)
            }
        }
        .focusScope(mainNamespace)
    }
}

默认焦点首选项仅限于与提供的命名空间匹配的可聚焦祖先。如果多个视图表达了这种偏好,那么SwiftUI 应用当前平台规则来确定哪个视图获得焦点。

可用版本

macOS 12.0+, tvOS 14.0+, watchOS 7.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Optional prefersDefaultFocus(_:in:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。