[screen-orientation][ios] Fix addOrientationChangeListener for iPadOS #23656
+69
−52
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.
Why
addOrientationChangeListener
would not work on iPadOS due to thetraitCollectionDidChange
not being called (both vertical and horizontal trait collections are the same on iPads).closes #23387 ENG-9260
How
Refactored the ViewControllers to use
viewWillTransition(to size: ...
instead oftraitCollectionDidChange(to traitCollection: UITraitCollection)
as the source of the orientation events.viewWillTransition
is correctly called on iPads and phones.The difference in timing of the event is now marginally different. I measured less than 1ms of a difference between the old and new version (new version is always called later than the old one), so users shouldn't notice any side-effects.
This also allows us to remove some code that was necessary in cases when the
traitCollectionDidChange
wasn't called by the view controller.Test Plan
Tested in Expo Go and bare expo on iOS 16, iPadOS 16 and iPadOS 15. Used a real iPad for iOS 16 tests and simulators for the rest.