Когда я долго нажимаю на кнопку в строке списка, отображаются все контекстные меню для всех кнопок. Похоже, вся строка списка выбрана. Как сделать так, чтобы контекстное меню отображалось только для нажатой кнопки?
Я видел этот вопрос , который несколько связан, и пробовал BorderlessButtonStyle()
. Он позволяет нажимать отдельные кнопки в строке, но не решает проблему контекстного меню. Я также попытался использовать .onTapGesture()
вместо Button()
, но это тоже не сработало.
В приведенном ниже примере я ожидаю увидеть только Действие для кнопки 1 при длительном нажатии на кнопку 1, но также отображается Действие для кнопки 2 .
![enter image description here](https://i.stack.imgur.com/fjyCg.gif)
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()
}
}
}