在给定的事件处理程序中(不是“shouldAutorotateToInterfaceOrientation”方法),我如何检测当前iPad的方向?我有一个文本字段,当键盘出现时必须向上动画显示在横向视图中,但不在纵向视图中,并希望知道我处于哪个方向以查看是否需要进行动画。
[UIDevice currentDevice].orientation
非常好用。
但是!!!
... 关键是要将它添加到- (void)viewWillAppear:(BOOL)animated
方法中。
示例:
(void)viewWillAppear:(BOOL)animated{
...
BOOL isLandscape = UIInterfaceOrientationIsLandscape(self.interfaceOrientation);
...
}
(void)viewDidLoad
调用它,它不可靠,特别是如果你使用多个线程(主 UI 线程、后台线程来访问大量外部数据等)。
说明:
1)即使您的应用程序将默认方向设置为纵向,用户也可以锁定它为横向。因此,设置默认值并不是解决这个问题的真正方法。
2)还有其他任务,如隐藏导航栏,应放置在viewWillAppear中以使其正常工作,并同时防止闪烁。同样适用于其他视图,例如UITableView willDisplayCell
-> 使用它来设置cell.selected和cell.accessoryType。