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


Swift Never focused(_:)用法及代码示例


实例方法

focused(_:)

通过将其焦点状态绑定到给定的布尔状态值来修改此视图。

声明

func focused(_ condition: FocusState<Bool>.Binding) -> some View

返回值

修改后的视图。

参数

condition

要绑定的焦点状态。当焦点移动到视图时,绑定将绑定值设置为 true 。如果调用者以编程方式将该值设置为true,则焦点将移至修改后的视图。当焦点离开修改后的视图时,绑定将值设置为 false 。如果调用者将该值设置为 false , SwiftUI 会自动解除焦点。

详述

每当 condition 值为 true 时,使用此修饰符使视图获得焦点。您可以使用此修饰符来观察单个视图的焦点状态,或者以编程方式设置和移除视图中的焦点。

在以下示例中,单个 TextField 接受用户所需的 username 。文本字段将其焦点状态绑定到布尔值 usernameFieldIsFocused 。 “Submit” 按钮的操作会验证名称是否可用。如果名称不可用,按钮将 usernameFieldIsFocused 设置为 true ,这会导致焦点返回到文本字段,因此用户可以输入不同的名称。


@State private var username: String = ""
@FocusState private var usernameFieldIsFocused: Bool
@State private var showUsernameTaken = false


var body: some View {
    VStack {
        TextField("Choose a username.", text: $username)
            .focused($usernameFieldIsFocused)
        if showUsernameTaken {
            Text("That username is taken. Please choose another.")
        }
        Button("Submit") {
            showUsernameTaken = false
            if !isUserNameAvailable(username: username) {
                usernameFieldIsFocused = true
                showUsernameTaken = true
            }
        }
    }
}

要通过匹配值来控制焦点,请改用 View/focused(_:equals:) 方法。

可用版本

iOS 15.0+, iPadOS 15.0+, macOS 12.0+, Mac Catalyst 15.0+, tvOS 15.0+, watchOS 8.0+

相关用法


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