0

我有一个简单的 Web 应用程序,我使用本机构建。

我的 MainWindow.xlb 应用程序中充满了本机视图控制器。

在 Native View Controller.mi 中有以下代码:

http://pastebin.com/xXFc0JCW

看着乱七八糟的复制粘贴到这里。

我似乎无法理解我哪里出错了,为什么我的应用程序/ UIWebView 总是保持纵向。

我是 iOS 开发的新手。

完整源代码:https ://www.dropbox.com/s/i9woti5ptecr9n4/Native.zip

4

2 回答 2

1

坦率地说,我在您的代码片段中看不到任何问题。然而,最近发生了变化,引入了 iOS6。如果我没记错的话,对于使用当前 SDK 构建的应用程序,将不再调用 shouldRotateToInterfaceOrientation 。取而代之的是,您在 info.plist 中定义支持的界面方向,并可能通过覆盖方法 supportedInterfaceOirentations 来覆盖视图控制器中的该设置,该方法返回整数中的位掩码(多么现代... :)

从文档:

处理视图旋转 在 iOS 6 中,您的应用程序支持在应用程序的 Info.plist 文件中定义的界面方向。视图控制器可以覆盖supportedInterfaceOrientations 方法来限制支持的方向列表。一般情况下,系统只会在窗口的根视图控制器或呈现为填满整个屏幕的视图控制器上调用该方法;子视图控制器使用其父视图控制器为它们提供的窗口部分,并且不再直接参与有关支持哪些旋转的决策。应用程序的方向掩码和视图控制器的方向掩码的交集用于确定视图控制器可以旋转到哪些方向。

如果我在这里错了,请纠正我。

于 2013-01-16T09:35:05.713 回答
1

现在它起作用了:

NativeAppDelegate.m

#import "NativeAppDelegate.h"
#import "NativeViewController.h"

@implementation NativeAppDelegate

@synthesize window;
@synthesize viewController;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    // Override point for customization after app launch    

    [self.window setRootViewController:viewController];

    return YES;
}


- (void)dealloc {
    [viewController release];
    [window release];
    [super dealloc];
}

@end

NativeViewController.m

#import "NativeViewController.h"

@implementation NativeViewController

@synthesize webView;


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"login" ofType:@"html"];
    NSData *htmlData = [NSData dataWithContentsOfFile:filePath];


    if (htmlData) {
        NSBundle *bundle = [NSBundle mainBundle]; 
        NSString *path = [bundle bundlePath];
        NSString *fullPath = [NSBundle pathForResource:@"login" ofType:@"html" inDirectory:path];
        [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:fullPath]]];
    }
}

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [webView release];
    [super dealloc];
}

@end

我还在 InterfaceBuilder 的 WebView 中取消选中 ScaleToFill ,否则你必须滚动页面才能看到你的世界。

我删除了定位方法并将 RootviewController 为您的 Window 设置为您的 ViewController。您的窗口没有 RootVieController。

于 2013-01-16T10:58:59.893 回答