I had the same issue, and I managed to work around it by setting minimumAngleDelta and minimumScaleDelta to .zero. It seems like the problem occurs when one gesture ends while the other is waiting for the minimal delta, causing things to get stuck. If you need to use non-zero deltas, you can handle the threshold check explicitly in the updating handler to ensure gestures don't get stuck.