为什么这个方向代码不起作用?

时间:2012-02-26 05:03:34

标签: iphone objective-c ios orientation

我有一个简单的UIWebView嵌套在ViewController中,它以模态方式呈现在导航控制器上。

结构如下:TableViewController - > TableViewController - > Modal(WebView呈现) - >模态(选项,通过手势,页面卷曲呈现)

除了带有WebView的方向外,所有视图都处理所有方向,它通过配置处理其方向。

具有Web视图的控制器具有以下方向代码:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    BOOL orientationSwitch = NO;

    if([self.webApp.orientationLandscape boolValue] &&
       UIInterfaceOrientationIsLandscape(interfaceOrientation))
        orientationSwitch = YES;

    if([self.webApp.orientationPortrait boolValue] &&
       UIInterfaceOrientationIsPortrait(interfaceOrientation))
        orientationSwitch = YES;

    return orientationSwitch;
}

现在的意图是,您可以设置一些选项,以确定视图是否应对方向更改做出反应。并且在大多数情况下它都有效,但是我有一个模态弹出窗口,您可以选择关闭包含Web视图的模式。一旦发生这种情况,似乎整个应用都锁定了方向。所有其他观点随后都不响应任何形式的轮换。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:3)

这是尝试的东西。向UIDevice注册UIDeviceOrientationDidChangeNotification并告诉它开始生成通知。当收到通知时,请调用UIViewController类方法attemptRotationToDeviceOrientation(仅限iOS 5)。

此处阅读此技术说明可能会有所帮助,因为您可能在这里做错了:https://developer.apple.com/library/ios/#qa/qa1688/_index.html

答案 1 :(得分:0)

首先,确保在项目设置中点击了正确支持的方向(目标 - > appname - >摘要)

我不知道为什么会这样,但我很久以前也遇到过类似的问题。那很久以前,ios 3.2还是什么的。我创建了一个只实现-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {}的ViewRotatorController 方法。每个其他ViewControllers都继承了它。让你的w​​ebappview有另一个实现。它可能不是最好的解决方案,但应该可行。