Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swiftui 迅捷:手势不会开火_Swiftui - Fatal编程技术网

Swiftui 迅捷:手势不会开火

Swiftui 迅捷:手势不会开火,swiftui,Swiftui,我想在屏幕上添加一个放大手势,但它不会启动。我试图通过.signature,Simultaneoussignature等添加手势,但没有区别。在我看来,滚动视图的手势具有优先级,但我不知道如何同时识别这两种手势 ... @State private var magnification: CGFloat = 1.0 var body: some View { let magnificationGesture = MagnificationGesture(minimumScale

我想在屏幕上添加一个放大手势,但它不会启动。我试图通过
.signature
Simultaneoussignature
等添加手势,但没有区别。在我看来,滚动视图的手势具有优先级,但我不知道如何同时识别这两种手势

...
@State private var magnification: CGFloat = 1.0

var body: some View {

        let magnificationGesture = MagnificationGesture(minimumScaleDelta: 0)
            .onChanged({ value in

                self.magnification = value
            })
            .onEnded({ value in

                self.magnification = value
            })

        return Group {

            VStack {

                TitleView(title: NSLocalizedString("timeline.title", comment: ""))

                ScaleView(viewModel: viewModel)

                ScrollView(.horizontal) {

...
                }

                Text("\(String(describing: magnification))")
            }
        }
        .gesture(magnificationGesture)
    }
编辑:我创建了一个具有相同错误行为的独立变体:

//
//  TimelineMock.swift
//  Testprojekt
//
//  Created by Gerhard Schneider on 31.07.19.
//  Copyright © 2019 innoreq GmbH. All rights reserved.
//

import SwiftUI


struct TimelineView: View {


    @State private var magnification: CGFloat = 1.0


    var body: some View {

        let magnificationGesture = MagnificationGesture(minimumScaleDelta: 0)
            .onChanged({ value in

                self.magnification = value
            })
            .onEnded({ value in

                self.magnification = value
            })

        return Group {

            VStack {

                Text("Title")
                .foregroundColor(.red)

                ScrollView(.horizontal) {

                    ZStack {

                        ForEach(0 ..< 10) { index in

                            HStack {

                                Text("Cell")
                                    .foregroundColor(.green)
                            }
                        }
                    }
                }

                Text("\(self.magnification.description)")
            }.gesture(magnificationGesture)
        }
    }
}


#if DEBUG
struct TimelineView_Previews: PreviewProvider {

    static var previews: some View {

        TimelineView()
    }
}
#endif
´´´
//
//斯威夫特
//测试项目
//
//由Gerhard Schneider于19年7月31日创作。
//版权所有©2019 innoreq GmbH。保留所有权利。
//
导入快捷键
结构时间线视图:视图{
@国有-私有var放大率:CGFloat=1.0
var body:一些观点{
让放大手势=放大手势(最小缩放比例:0)
.onChanged({中的值
自我放大=数值
})
.onEnded({中的值
自我放大=数值
})
返回组{
VStack{
文本(“标题”)
.foregroundColor(.red)
滚动视图(.horizontal){
ZStack{
ForEach(0..<10){index in
HStack{
文本(“单元格”)
.foregroundColor(.绿色)
}
}
}
}
文本(\(self.放大率.description)”)
}.手势(放大手势)
}
}
}
#如果调试
结构TimelineView\u预览:PreviewProvider{
静态var预览:一些视图{
TimelineView()
}
}
#恩迪夫
´´´

我更新到了Xcode 11 beta 5和macOS 10.15 beta 5,现在似乎可以使用了

我删除了我的答案,因为您已经更正了我在您的问题中建议的更改(属性名称,missing.signature())。由于代码中有许多位丢失,因此很难复制。首先,我会将.signature移动到VStack,而不是组。滚动视图只有一个带有ForEach循环的ZStack,绑定到视图模型,它在开始时被忽略了,所以没有什么特别的。我将
.signature
移动到VStack,没有任何更改。问题似乎是:我如何操作滚动视图的默认拖动手势,以便首先检查我的放大手势?…嗯,不是真的:滚动视图必须先“按下”,以便滚动、减速和停止,然后识别缩放手势。是的,我正在尝试同样的图像,它显然只有在我对图像使用拖动手势几次后才起作用。