Кнопка внутри другой кнопки в SwiftUI - PullRequest
0 голосов
/ 06 мая 2020

Как я могу заставить внутреннее Button выполнять свое действие вместо того, чтобы всегда выполнялось внешнее?

struct Foo: View {
    var body: some View {
        Button(action: { print("alloha") }) {
            HStack {
                Button(action: { print("hello") }) {
                    Image(systemName: "circle.fill")
                }
                Text("world")
                Spacer()
            }
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Мне любопытно, почему вы добавляете кнопку внутри кнопки? Я мог бы использовать две кнопки в HStack, как показано ниже. Это будет очевидно для пользователя при нажатии каждой кнопки.

HStack {
    Button(action: { print("hello") }) {
        Image(systemName: "circle.fill")
    }

    Button(action: {
        print("World")
    }) {
        Text("World")
    }
}
0 голосов
/ 06 мая 2020

Это работает, просто дайте достаточно места для внутренней кнопки, поэтому проверка нажатия может указать, какую кнопку активировать, как в примере ниже. (Протестировано с Xcode 11.4 / iOS 13.4)

demo

struct Foo: View {
    var body: some View {
        Button(action: { print("alloha") }) {
            HStack {
                Button(action: { print("hello") }) {
                    Image(systemName: "circle.fill").padding() // << more space !!
                        .border(Color.red) // << for testing
                }
                Text("world")
                Spacer()
            }
        }
    }
}
...