Quero detectar onde o gesto de arrastar começou. Tenho uma subvisualização com apenas 20 pontos de largura. Adiciono um gesto de arrastar à supervisualização e quero me mover por essa subvisualização somente se o local de início do gesto de arrastar no início do gesto estiver a 20 pontos do local dessa subvisualização. Não quero adicionar o gesto de arrastar a essa subvisualização, pois isso causou outros problemas no código (relatados em outras perguntas do SO e sem solução limpa). Então, tento adicionar o gesto à supervisualização.
Tentei o seguinte código, mas ele não funciona porque não detecta quando e onde o gesto COMEÇOU.
DragGesture(minimumDistance: 0)
.updating($scrubberSeeking, body: { value, state, _ in
if abs(value.startLocation.x - scrubberOffset) > 20.0 {
state = false
return
}
state = true
})
.onChanged({ value in
if scrubberSeeking {
...
...
}
})
.onEnded { value in
}
Para detectar onde o gesto de arrastar começou, tente esta abordagem armazenando o início de um arrasto em uma var
dragStartPosition
em.onChanged
.Em seguida, redefina essa variável para nula
.onEnded
após concluir qualquer lógica desejada, conforme mostrado no código de exemplo:EDITAR-1
exemplo de código para também arrastar
Circle
e responder à pergunta de como detectar onde o gesto de arrastar começou.