SwiftUI: действие пользовательской кнопки не срабатывает - PullRequest
0 голосов
/ 30 апреля 2020

Тестирование некоторых вещей на tvOS с SwiftUI. Когда я добавляю собственный стиль к кнопке, «действие» кнопки не срабатывает. В этом примере я хочу напечатать «нажато», но добавление функций также не работает.

Возможно ли также реализовать пользовательский триггер действия или что я делаю неправильно?

Для пояснения почему я хочу иметь собственный стиль кнопки.

Когда я не использую какой-либо стиль кнопок, «действие» работает, но функция «onFocusChange» никогда не вызывается. Что мне нужно!

Но .. когда я использую стиль кнопок, onFocusChange работает, но действие не выполняется .....

struct CustomButton: View {
    @State private var buttonFocus: Bool = false
    var body: some View {
        VStack(alignment: .center){
            Button(action: {
                print("pressed")
            })
            {
                Text("Save")
            }
            .buttonStyle(TestButtonStyle(focused: buttonFocus))
            .focusable(true, onFocusChange: { (changed) in
                self.buttonFocus.toggle()
            })
        }    
    }
}

Стиль кнопок:

struct TestButtonStyle: ButtonStyle {
    let focused: Bool

    public func makeBody(configuration: TestButtonStyle.Configuration) -> some View {
        configuration.label
            .foregroundColor(.white)
            .background(RoundedRectangle(cornerRadius: 5).fill(Color.red))
            .scaleEffect(focused ? 1.5 : 1.0)
    }
}
...