gpt4 book ai didi

SwiftUI 放大手势 onUpdate 不会在设备上立即触发(适用于模拟器)

转载 作者:行者123 更新时间:2023-12-05 06:23:21 25 4
gpt4 key购买 nike

我的放大手势的 onUpdate 属性会立即在模拟器上触发,但不会在设备上触发

我已经尝试删除所有其他手势。似乎无所谓。在 iOS 13.1 和 13.2 以及 xcode 11.1 和 11.2 上试过

import UIKit

struct ContentView: View {

@State var gridDraggedX: CGFloat = 0
@State var gridDraggedY: CGFloat = 0
@State var accumulatedGridDraggedX: CGFloat = 0
@State var accumulatedGridDraggedY: CGFloat = 0
private var numCells: CGFloat = 10

var dimension: CGFloat {
numCells * cellSize
}

@State var initialCellSize: CGFloat = 50.0
@State var cellSize: CGFloat = 50.0

var body: some View {

let dragGesture = DragGesture(minimumDistance: 5.0, coordinateSpace: .global)
.onChanged({ value in
self.gridDraggedX = value.translation.width + self.accumulatedGridDraggedX
self.gridDraggedY = value.translation.height + self.accumulatedGridDraggedY
}).onEnded({ value in
self.gridDraggedX = value.translation.width + self.accumulatedGridDraggedX
self.gridDraggedY = value.translation.height + self.accumulatedGridDraggedY
self.accumulatedGridDraggedX = self.gridDraggedX
self.accumulatedGridDraggedY = self.gridDraggedY
})

let dragGesture2 = DragGesture(minimumDistance: 0.0, coordinateSpace: .global)
.onEnded({ value in
if value.translation.width == 0 && value.translation.height == 0 {
print(value.startLocation)
}
})

let magGesture = MagnificationGesture(minimumScaleDelta: 0.0).onChanged({ value in
print(value)
self.cellSize = self.initialCellSize * value
}).onEnded({ value in
self.cellSize = self.initialCellSize * value
self.initialCellSize = self.cellSize
})

return ZStack(alignment: .topLeading) {
GeometryReader { geometry in
Path { path in
path.move(to: CGPoint(x:0, y: 0))
path.addLine(to: CGPoint(x: 0, y: self.dimension))
path.addLine(to: CGPoint(x: self.dimension, y: self.dimension))
path.addLine(to: CGPoint(x: self.dimension, y: 0))
path.addLine(to: CGPoint(x: 0, y: 0))
}.fill(Color.red)
Path { path in
for i in (0...Int(self.numCells)) {
path.move(to: CGPoint(x: 0 + CGFloat(i) * self.cellSize, y: 0))
path.addLine(to: CGPoint(x: 0 + CGFloat(i) * self.cellSize, y: self.dimension))
}
for i in (0...Int(self.numCells)) {
path.move(to: CGPoint(x: 0, y: 0 + CGFloat(i) * self.cellSize))
path.addLine(to: CGPoint(x: self.dimension, y: 0 + CGFloat(i) * self.cellSize))
}
}.stroke(Color.blue)
}.offset(x: gridDraggedX, y: gridDraggedY).simultaneousGesture(dragGesture).simultaneousGesture(dragGesture2).simultaneousGesture(magGesture)
}
}
}

我希望 magGesture 的 onUpdate 在用户开始捏合时立即触发。直到立即 magGesture onUpdate 才会触发。在模拟器上使用

编辑:所以在设备上它似乎很挑剔。如果你的两个捏手指中的一个没有移动,那么它不会触发 onUpdate 直到该值高于某个阈值。哇哦

最佳答案

所以在设备上它似乎只是非常挑剔。如果你的两个捏手指中的一个没有移动,那么它不会触发 onUpdate 直到该值高于某个阈值。 oof - 这个阈值似乎是任意的。也可能只是我的第二根手指移动的那一刻,达到一定的速度,或者其他我不知道的东西

关于SwiftUI 放大手势 onUpdate 不会在设备上立即触发(适用于模拟器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58422177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com