SwiftUI tvOS: NavigationLink с пользовательским стилем кнопок отключает автоматическую прокрутку в представлении списка

Я хочу добиться поведения прокрутки в пользовательском стиле кнопки в NavigationLink.

      NavigationLink {
    Color.blue
} label: {
    listItem(model: model)
}
.buttonStyle( 
   HomeCardStyle(onFocusChange: { isFocused in 
      if isFocused { 
         // My Custom Code 
      } 
   }) 
)

Код стиля кнопки:

      struct HomeCardStyle: ButtonStyle {
    let onFocusChange: (Bool) -> Void
    @Environment(\.isFocused) private var focused: Bool

    func makeBody(configuration: Self.Configuration) -> some View {
        configuration.label
            .overlay(
                Rectangle()
                    .stroke(
                        Color.yellow,
                        lineWidth: focused ? Constants.UI.Padding.xxSmall : Constants.UI.Padding.zero
                    )
                    .shadow(
                        color: focused ? .yellow : .clear,
                        radius: Constants.UI.Padding.xxxxxSmall,
                        x: Constants.UI.Padding.zero,
                        y: Constants.UI.Padding.one
                    )
            )
            .contentShape(Rectangle())
            .padding(.horizontal, focused ? Constants.UI.Padding.default : Constants.UI.Padding.zero)
            .scaleEffect(focused ? Constants.UI.Frame.homeFeaturedItemScaleMedium : Constants.UI.Frame.homeFeaturedItemScaleRegular)
            .animation(.linear(duration: Constants.UI.AnimationDuration.indicator), value: focused)
            .onChange(of: focused) { newValue in
                onFocusChange(newValue)
            }
    }
}

У меня есть требование показать пользовательский индикатор, поэтому я использую пользовательский стиль кнопки. Итак, у меня есть горизонтальный список вышеперечисленного, как показано на изображении ниже:

Теперь проблема в случае .buttonStyle(.card), список автоматически прокручивается вверх, когда фокус переходит на NavigationLinks. Но это не работает, если я использую собственный стиль кнопки.

Как я могу добиться такого же поведения?

0 ответов

Другие вопросы по тегам