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


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