タスクを解決するのを手伝ってください-インターフェースを回転させることが許可されていないviewControllerがあります:
- (BOOL)shouldAutorotate {
return NO;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
しかし、このコントローラーに表示される alertView を回転させる必要があります! そのため、ユーザーがデバイスを回転させた場合、alertView は回転に追従し、メイン インターフェイスは停止します。通知を購読しようとしました:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceRotated:) name:UIDeviceOrientationDidChangeNotification object:nil];
しかし、私deviceRotated:
はそのようなペイロードで通知を受け取っています:
NSConcreteNotification 0x101dc50 {name = UIDeviceOrientationDidChangeNotification; object = <UIDevice: 0x103e640>; userInfo = {
UIDeviceOrientationRotateAnimatedUserInfoKey = 1;
}}
とはUIDeviceOrientationRotateAnimatedUserInfoKey
? また、現在の interfaceOrientation を知るにはどうすればよいですか? または、現在の向きを取得して alertView を回転させるより良い方法を提案してください。
使ってみた
(BOOL)shouldAutorotateToInterfaceOrientation:UIInterfaceOrientation)toInterfaceOrientation
と
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
しかし、これらのメソッドは iOS6 では呼び出されません :(
また、デバイスが特定の方向に回転していることを知るために使用できる他の方法はありますか? 前もって感謝します!PS タスクが少しばかげているように見えることはわかっていますが、これは顧客の主張です。ごめん :)