Have you tried just turning autoOrients to false and setting the stage aspect ratio to always be portrait?
stage.autoOrients = false;
It's more of a generic issue. Please read my post at http://stackoverflow.com/questions/8900849/properly-preventing-orientation-change-in-flex- mobile-app
In general, there are very visible issues when using event.preventDefault() on ORIENTATION_CHANGING - while the stage does not reorient, some UI parts still perform measuring and sizing, such as ViewNavigator and its components (i.e. actionbar). As a result, preventing orientation changing leads to very confusing results and basically leaving the application in undeterministic state, resulting in distorted view.
The solution you've provided doesn't help much, because:
a) turns off autoorienting, which disables the common usecase, where user just turns the device 180 degress - it's still portrait (or landscape), but the stage will not reorient then.
b) setting aspectratio arbitrary sets stage orientation to one specific orientation (either for landscape or portrait) and kicks in the animation - this again is no good for 180 degree rotation.
I've event tried to set stage autoorient = false upon enterning my view, rotating the device physically few times and then setting it back to true when exiting the view - it was always breaking application state miserably, which means there are some underlying bits that require investigation.
This is one of most frustrating issues on AIR for iOS, as it pretty much renders the orientation changes unusable.
I'm using Flex SDK 4.6 with Flash Builder 4.6 on Mac OS X Lion. Testing in debugger (the issue is visible there also) and iPad iOS 1 5.0.1