【问题标题】:shouldAutorotateToInterfaceOrientation is only called after presenting viewcontrollershouldAutorotateToInterfaceOrientation 仅在呈现视图控制器后调用
【发布时间】:2011-05-10 10:27:30
【问题描述】:

当我创建一个项目并在没有更改的情况下启动它并加载自动创建的视图控制器时,它会毫无问题地调用 shouldAutorotateToInterfaceOrientation。 现在我尝试了不同的方法来呈现自己的视图控制器,但在该视图中,将不会在旋转时调用 shouldAutorotateToInterfaceOrientation。 我的第一次尝试是以这种方式更改应用程序委托的 didFinishLaunchingWithOptions :

ProjectView1 *pv1 = [ProjectView1 alloc];
self.viewController = pv1;
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];

但在 ProjectView1 中,旋转屏幕时不会调用 shouldAutorotateToInterfaceOrientation。

我的第二次尝试是加载通过创建项目创建的视图,并通过调用 presentModalViewController 来呈现我的自定义视图模式,但结果是相同的,我的自定义视图控制器没有调用 shouldAutorotateToInterfaceOrientation。

【问题讨论】:

  • 你是如何展示视图控制器的(你的第一次尝试,在你意识到这个问题之前)?尝试检查导航堆栈,并找到任何可能拦截该方法的类。
  • 在代码示例中,我只是将“ProjectView1”设置为视图控制器,仅此而已。在视图控制器中,我没有接到 shouldAutorotateToInterfaceOrientation 的调用。

标签: ios uiviewcontroller screen-orientation


【解决方案1】:

你应该在你为 UIViewController 做 alloc 之后调用 initWithNib 方法。

我尝试复制这种情况,并且以下代码在方向更改时调用 shouldAutorotateToInterfaceOrientation:

 ProjectView1 *pv1 = [[ProjectView1 alloc]initWithNibName:nil bundle:nil];
 self.viewController = pv1;
 self.window.rootViewController = self.viewController;
 [self.window makeKeyAndVisible];

如果您打算自己构建视图,请更改代码输入正确的 nib 文件名或将其保留为 nil。

【讨论】:

  • 是的,效果很好。看起来 init 方法在响应者链中注册了视图。谢谢。
猜你喜欢
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-09
  • 2015-07-16
相关资源
最近更新 更多