capacitor-plugins
capacitor-plugins copied to clipboard
@capacitor/screen-orientation: iOS: orientation() and screenOrientationChange event report orientation change although orientation is locked
Bug Report
Plugin(s)
@capacitor/[email protected]
Capacitor Version
💊 Capacitor Doctor 💊
Latest Dependencies:
@capacitor/cli: 4.7.0
@capacitor/core: 4.7.0
@capacitor/android: 4.7.0
@capacitor/ios: 4.7.0
Installed Dependencies:
@capacitor/core: 4.7.0
@capacitor/cli: 4.7.0
@capacitor/ios: 4.7.0
@capacitor/android: 4.7.0
[success] iOS looking great! 👌
Platform(s)
- iOS
Current Behavior
After locking the orientation
await ScreenOrientation.lock({orientation: "portrait-primary"})
the screenOrientationChange
listener still reports changed orientations when the device is rotated as if the orientation was not locked. Calling
const {type} = await ScreenOrientation.orientation()
also returns the orientation as if the screen orientation was not locked.
The document orientation itself is locked correctly though, no matter how the device is rotated.
Expected Behavior
The screenOrientationChange
listener should only report changes when the screen orientation is actually changed, not when the device is rotated while the screen orientation is locked. Likewise ScreenOrientation.orientation()
should return the correct screen orientation when it is locked, no matter how the device is rotated.
This does not seem to be an issue on Android. There the screenOrientationChange
listener gets only called after ScreenOrientation.lock()
if it actually changed the screen orientation. ScreenOrientation.orientation()
also returns the correct screen orientation after ScreenOrientation.lock()
was called.
Code Reproduction
Other Technical Details
Additional Context
This behavior can be reproduced with this reproduction app: https://github.com/WIStudent/capacitor-screen-orientation-issue-reproduction-app
Even though the screen is locked to landscape-primary, the
orientation()
function and the event listener return the current device orientation when the device is rotated.
I'm encountering this same issue in my app, any timeline on a fix?