Есть ли простой способ распознавания жестов в SwiftUI?
Согласно этому учебнику Я скопировал код в соответствии с моим случаем:
(мне нужно изменить значение page2 из другого вида)
import SwiftUI
struct SwipeGesture: UIViewRepresentable {
@Binding var page2: Int
func makeCoordinator() -> SwipeGesture.Coordinator {
return SwipeGesture.Coordinator(parent1: self)
}
func makeUIView(context: UIViewRepresentableContext<SwipeGesture>) -> UIView {
let view = UIView()
view.backgroundColor = .clear
let left = UISwipeGestureRecognizer(target: context.coordinator, action: #selector(context.coordinator.left))
left.direction = .left
let right = UISwipeGestureRecognizer(target: context.coordinator, action: #selector(context.coordinator.right))
right.direction = .right
view.addGestureRecognizer(left)
view.addGestureRecognizer(right)
return view
}
func updateUIView(_ uiView: UIView, context: UIViewRepresentableContext<SwipeGesture>) {
}
class Coordinator: NSObject{
var parent : SwipeGesture
init(parent1 : NSObject){
parent = parent1
}
@objc func left(){
print("left swipe")
parent.page2 = parent.page2 + 1
}
@objc func right(){
print("right swipe")
parent.page2 = parent.page2 - 1
}
}
}
Используется в ContentView: SwipeGesture(page2: $page2)
@State var page = 0
для основного вида
@Binding var page: Int
для этого SwipeGesture struct
Проблема:
Есть идеи, что я сделал не так?
Код SwiftUI:
var body: some View {
// MARK: - Screen Layers
ZStack {
// Logo name
VStack {
Spacer()
.frame(height: self.margin1)
Image(uiImage: UIImage(named: "lobby_bg-logo")!)
.renderingMode(.original)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(height: self.screenH * 0.3125)
Spacer()
}
SwipeGesture(page2: $page2)
Ошибка:
Невозможно присвоить значение типа NSObject типу SwipeGesture Происходит в части init
.