當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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(_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。