Why am I getting this: [SystemGestureGate] Gesture: System gesture gate timed out

I ran into the same error today. It seems to occur upon long-pressing a button (or maybe any gesture-handling element) near the bottom of the screen.

Here’s a dumb view I tested with:

struct vertButtons: View {
  @State var i = 0
  func action() {i=(i+1)%10}
  var body: some View {
    VStack {
        Text(String(i))
            .font(.title)
        Spacer()
        Button(action: {action()}) {
            Text("Good Button") // This one is fine
                .font(.title)
        }
        Spacer()
        Button(action: {action()}) {
            Text("Good Button") // This one is fine
                .font(.title)
        }
        Spacer()
        Button(action: {action()}) {
            Text("Good Button") // This one is fine
                .font(.title)
        }
        Spacer()
        Button(action: {action()}) {
            Text("\"Bad\" Button") // Long-press produces "gesture gate timeout"
                .font(.title)
        }
    }
  }
}

Long-pressing the “Bad” button produces the error (“Gesture: System gesture gate timed out”) while doing the same with any of the “Good” buttons does not. The counter text is there to demonstrate that the error message does not interfere with the button action being executed upon release of the long press.

My best guess is that iOS includes or included some feature (the “system gesture gate”) designed to prevent interference between app gesture handling and special system gestures in the bottom part of the screen, and that a recent iOS update introduced a bug in that feature that’s causing it to time out instead of doing what it’s supposed to do.

The error had no effect on expected functionality in either this test view or my actual app, so I wonder if your woes have some other cause.

I wish I could give a more authoritative answer, but hope this was helpful. Will caveat that I’m very new to Swift and SwiftUI.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)