我正苦恼于要买一个iPhone应用程序,它只需要在导航控制器堆栈中每按一次或弹出一次就可以改变方向。
基本上,第一个视图是肖像,第二个景观是第三个肖像(是的,我知道这不太理想,但这就是设计,我必须实现它)。
我在这里接受过各种各样的建议……
How do I detect a rotation on the iPhone without the device autorotating?
Force portrait orientation on pushing new view to UINavigationViewController
Is there a documented way to set the iPhone orientation?
但没有完全成功。
设置为根据3.1.2链接我对以上链接文章的阅读似乎表明,如果我的肖像视图推动视图
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight) );
}
然后,该视图应显示为旋转到横向。发生的是它以“破碎”的肖像形式出现,然后随着设备的转动而正确地旋转。
如果我将控制器弹出到我的纵向视图(它有一个适当的shouldAtotate…)中,那么它将保持在断开的横向视图中,直到设备返回纵向。
我还尝试删除所有shouldAuto消息,而不是通过转换视图强制旋转。这类工作,我通过移动状态栏(它实际上隐藏在我的应用程序中)发现了这一点。
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;
如果需要,键盘将以正确的方向出现。
这种方法的问题在于,当您没有状态栏时,状态栏转换是奇怪和丑陋的——随着每次更改,页面上都会出现阴影。
所以。我错过了什么。
1)我是否错误地认为,在3.1.2(或更早的版本)中,应该只通过推动控制器来实现所需的方向?
2)还有其他方法可以让键盘以正确的方向显示吗?
3)未记录的API调用方式是否正确(请不要!)