如何为SwiftUI进行滑动手势?

问题描述 投票:0回答:1

SwiftUI中是否有任何简单的手势识别方法?

根据此tutorial,我已根据情况复制了代码:

((我需要从另一个视图更改值“ 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问题是:enter image description here

任何想法我做错了什么?

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部分。

swiftui swipe
1个回答
0
投票

这里已解决

class Coordinator: NSObject{

    var parent : SwipeGesture

    init(parent1 : SwipeGesture){    // << corrected type !!
        parent = parent1
    }
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.