#ios #swift #swiftui #hstack
#iOS #быстрый #swiftui #hstack #swift
Вопрос:
Я новичок в SwiftUI. Я показываю серию элементов в HStack
. Им не нужно перемещаться, но я хотел бы выделить их, когда пользователь проводит по ним пальцем, и изменить отдельный вид в другом месте, чтобы предоставить больше информации о выделенном элементе, без необходимости пользователю поднимать палец. Пользователи должны иметь возможность перемещаться взад и вперед и видеть элемент, выделенный их пальцем, а также обновление содержимого отдельного представления.
В UIKit я бы создал UIPanGestureRecognizer
, и по мере распознавания жеста получал правильный вид для местоположения распознавателя, выделял вид, не выделял все другие виды и обновлял подробный вид.
Однако я не могу понять, как это сделать в SwiftUI. Я не хочу ничего перетаскивать, я просто хочу получить, какой вид находится под пальцем пользователя, когда он перемещает его.
Комментарии:
1. Используйте модификатор
DragGesture
with.gesture
в своих представлениях.2. @Asperi Используя это, как я могу узнать, к какому виду в стеке пользователь в данный момент прикасается?
Ответ №1:
Я думаю, что что-то подобное может вам помочь:
struct ContentView: View {
var body: some View {
VStack {
Text("Hello, World!")
Text("Hello, World!")
}
.gesture(
DragGesture()
.onChanged({ value in print(value) })
.onEnded({ _ in print("End")})
)
}
}
Комментарии:
1. Как я могу узнать, к какому виду в стеке пользователь прикасается изнутри
onChanged
блока?2. @CompC Я не совсем понимаю вашу цель. В области SwiftUI вы должны сосредоточиться на конкретном представлении, как и в области UIKit. Вы должны сосредоточиться на состоянии и его привязке к ‘Представлению’ SwiftUI.
3. Я использую SwiftUI и UIKit в одном приложении. У меня есть элемент управления, встроенный в SwiftUI, и когда пользователь перетаскивает представления в HStack, UIViewController, который содержит представление SwiftUI, должен получить обратный вызов с индексом представления в HStack, к которому прикасается пользователь.