Как применить контекстное меню к кнопкам в строке списка SwiftUI? - PullRequest
0 голосов
/ 14 апреля 2020

Когда я долго нажимаю на кнопку в строке списка, отображаются все контекстные меню для всех кнопок. Похоже, вся строка списка выбрана. Как сделать так, чтобы контекстное меню отображалось только для нажатой кнопки?

Я видел этот вопрос , который несколько связан, и пробовал BorderlessButtonStyle(). Он позволяет нажимать отдельные кнопки в строке, но не решает проблему контекстного меню. Я также попытался использовать .onTapGesture() вместо Button(), но это тоже не сработало.

В приведенном ниже примере я ожидаю увидеть только Действие для кнопки 1 при длительном нажатии на кнопку 1, но также отображается Действие для кнопки 2 .

enter image description here

struct ContentView: View {
    var body: some View {
        List {
            ForEach((1..<3), content: { _ in
                ListButton()
            })
        }
    }
}

struct ListButton: View {
    var body: some View {
        HStack {
            Spacer()

            Button("Button 1") { }
                .buttonStyle(BorderlessButtonStyle())
                .contextMenu(menuItems: {
                    Text("Action for button 1")
                })

            Spacer()

            Button("Button 2") { }
                .buttonStyle(BorderlessButtonStyle())
                .contextMenu(menuItems: {
                    Text("Action for button 2")
                })

            Spacer()
        }
    }
}
...