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,没有任何更改。问题似乎是:我如何操作滚动视图的默认拖动手势,以便首先检查我的放大手势?…嗯,不是真的:滚动视图必须先“按下”,以便滚动、减速和停止,然后识别缩放手势。是的,我正在尝试同样的图像,它显然只有在我对图像使用拖动手势几次后才起作用。