iOS: stop the dim-fuse gesture from eating the settings form's taps - #101
Merged
Merged
Conversation
The standby dim reset its fuse via a SwiftUI DragGesture(minimumDistance: 0) simultaneousGesture on the whole settings form (f03e8bd). That gesture competes for every first touch: menu-style pickers stopped opening on a single tap on some iOS releases (the whole Camera & color section looked locked at its defaults — issues #96, #99), and the RPSystemBroadcastPickerView overlay stopped receiving single taps everywhere, since touches a SwiftUI gesture claims are withheld from UIKit subviews (issue #97). The reporters' two-finger workaround was the second touch slipping past a drag that only tracks the first. Replace it with TouchActivitySensor: a window-level UIKit recognizer that fires on touchesBegan and immediately fails itself, so it observes touch activity without ever winning, delaying, or cancelling anything. Same behaviour for the fuse (any touch resets it), no participation in gesture arbitration at all. Fixes #96 Fixes #97 Fixes #99 Release-Beta: true Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AeWct1Rvpqi4ptgogiwsCL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
Fixes #89
Fixes #96
Fixes #97
Fixes #99
The standby dim reset its fuse via a
simultaneousGesture(DragGesture(minimumDistance: 0))on the whole settings Form (f03e8bd, late July). A zero-distance drag competes for every first touch: menu-style pickers stopped opening on single tap on some iOS releases — the whole Camera & color section looked locked at its defaults (#96, #99, reproduced by five reporters across iPhone XR→16e on iOS 18.7/26.x) — and theRPSystemBroadcastPickerViewoverlay stopped receiving single taps everywhere, since touches a SwiftUI gesture claims are withheld from UIKit subviews (#97, regression window builds 1038→1054 matches the gesture landing). The reporters' two-finger workaround was the second touch slipping past a drag that only tracks the first.Replaced with
TouchActivitySensor: a window-level UIKit recognizer that fires ontouchesBeganand immediately fails itself — it observes touch activity for the dim fuse without ever winning, delaying, or cancelling another recognizer, and never withholds touches from UIKit views. Same fuse behavior (any touch resets it), zero participation in gesture arbitration.Carries
Release-Bump-wise:Release-Beta: true— ships to TestFlight as the next 1.10.0 beta without cutting a new stable Latest.How it was tested
Swift parse check passes (
ios-app/syntax-check.sh); the full type check is this PR's macOS CI job. Behavioral verification needs devices: the broadcast-row single tap reproduces on the maintainer's phone (pre-fix) and should work in the next build; the picker fix lands with TestFlight testers on the affected iOS versions (18.7.9, 26.5.2, 26.6). The dim-fuse still resets on any touch by construction (the sensor reports every touch-down).🤖 Generated with Claude Code
https://claude.ai/code/session_01AeWct1Rvpqi4ptgogiwsCL
Generated by Claude Code