Avatar
struct ContentView: View { @State private var location: CGPoint = CGPoint(x: 50, y: 50) @State private var timeRemaining = 600 @State private var timerRunning = false var body: some View { VStack { ZStack { Circle() .fill(Color.blue) .frame(width: 50, height: 50) .position(location) .gesture( DragGesture() .onChanged { value in location = value.location } ) } .frame(maxWidth: .infinity, maxHeight: .infinity) .border(Color.black, width: 2) TimerView(timerRunning: $timerRunning, timeRemaining: $timeRemaining)// 枠線を追加 } } } struct TimerView: View { @Binding var timerRunning: Bool @Binding var timeRemaining: Int let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect() var body: some View { VStack { HStack { Text("\(String(format: "%02d", timeRemaining / 60)):\(String(format: "%02d", timeRemaining % 60))") .font(.system(size: 48)) .fontWeight(.bold) .onTapGesture { timerRunning.toggle() } .onReceive(timer) { _ in if timeRemaining > 0 && timerRunning { timeRemaining -= 1 } else if timeRemaining == 0 { timerRunning = false } } } } } }
9:32 AM
質問です。こんな感じの普通のTimerとdragで物体が動くViewを作ったとき、物体を動かしているときにTimerが止まってしまいます。どうすればDragしている間でもTimerを更新することができますか?