Skip to content

Conversation

@mozzius
Copy link

@mozzius mozzius commented Nov 11, 2025

Description

Fixes #3388

In #3173, interaction is disabled during screen transitions. However, when using the native fullscreen video player from expo-video, there is an edge case - you can cancel your swipe gesture, which causes user interaction to be disabled and never reenabled. The order of events is this:

  • willMoveToWindow fires, disabling user interaction
  • I cancel the swipe gesture by swiping up instead of down
  • willMoveToWindow again, as we're moving back to the video player
  • viewDidAppear does not fire, because nothing actually changed

Therefore user interaction is never reenabled, even though the transition is over

Changes

Caution

This was vibecoded. I have done my best to verify the code.

My fix is to track the current window, and in didMoveToWindow check if the movement is from nil to a window, reenabling user interaction if so. This appears to cover the dismiss case.

I am no expert here and I don't trust Claude, so please correct me if I'm wrong, there's a good chance I am. However, this does appear to fix the issue both in my minimal repro and in the main app.

Screenshots / GIFs

Before

Screen.Recording.2025-11-11.at.13.04.31-compressed.mp4

After

Screen.Recording.2025-11-11.at.15.20.49-compressed.mp4

Test code and steps to reproduce

My repro is here: https://github.com/mozzius/screens-video-repro/tree/samuel/patch-fix

I patched in this change in this branch, so you can see the fix working: https://github.com/mozzius/screens-video-repro/tree/samuel/patch-fix

Checklist

@xieweizhi
Copy link

This will fix #3390, same issue.

@kkafar kkafar requested a review from kmichalikk November 13, 2025 11:30
@mozzius mozzius changed the title [iOS] Fix user interaction being never being reenabled when cancelling a video fullscreen dismiss gesture [iOS] Fix user interaction never being reenabled when cancelling a video fullscreen dismiss gesture Nov 14, 2025
@kmichalikk
Copy link
Contributor

Superseded by #3311

@kmichalikk kmichalikk closed this Nov 14, 2025
@mozzius mozzius deleted the samuel/video-dismiss branch November 14, 2025 13:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[iOS] Swiping a video player to dismiss in the wrong direction causes the app to become unresponsive to input

3 participants