Если я поставлю несколько видов подряд без пробелов (или очень мало пробелов между ними) и добавлю какое-либо действие Gesture
, я не смогу правильно определить, какой из них был нажат. Похоже, что есть некоторый отступ внутри жеста, который я не могу удалить.
вот пример кода:
struct ContentView: View {
@State var tap = 0
@State var lastClick = CGPoint.zero
var body: some View {
VStack{
Text("last tap: \(tap)")
Text("coordinates: (x: \(Int(lastClick.x)), y: \(Int(lastClick.y)))")
HStack(spacing: 0){
ForEach(0...4, id: \.self){ind in
RoundedRectangle(cornerRadius: 10)
.foregroundColor(Color.gray)
.overlay(Text("\(ind)"))
.overlay(Circle()
.frame(width: 4, height: 4)
.foregroundColor(self.tap == ind ? Color.red : Color.clear)
.position(self.lastClick)
)
.frame(width: 40, height: 50)
//.border(Color.black, width: 0.5)
.gesture(DragGesture(minimumDistance: 0)
.onEnded(){value in
self.tap = ind
self.lastClick = value.startLocation
}
)
}
}
}
}
}
и поведение:
Я хочу, чтобы Gesture
обнаружил нажатие кнопки 0, когда местоположение щелчка становится отрицательным. Есть ли способ сделать это?