SwiftUI метод для выполнения действий на ощупь - PullRequest
2 голосов
/ 10 июня 2019

Я ищу что-то вроде tapAction для Rectangle, но вместо выполнения действия над касанием, я ищу это, когда к виду просто прикоснуться.

Дело в том, что у меня 3 прямоугольника по горизонтали. Я хочу коснуться прямоугольника № 1, проведите через № 2, чтобы приземлиться на № 3. Я хочу, чтобы этот размах вызвал действие на прямоугольнике № 2.

⬛ ⬛ ⬛
------->

Есть ли для него решение siwftui или мне нужно задействовать uikit?

1 Ответ

2 голосов
/ 10 июня 2019

Для этого вам нужно создать жест

private var dragGesture: some Gesture {
    DragGesture(minimumDistance: 10, coordinateSpace: .global)
      .onChanged { print("Changed \($0.location)") }
      .onEnded { print("Changed \($0.location)") }
  }

и добавить к представлению:

Text("Text")
    .gesture(dragGesture)

Подробнее о доступных жестах здесь

UPD: Чтобы отслеживать изменения жестов, вам нужно использовать @State свойство

 @State var position: CGPoint

и добавить к вашему модификатору положения вида, чтобы объявление вида было следующим:

  Text("Text")
    .position(position)
    .gesture(dragGesture)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...