0

ネイティブを使用してビルドする単純なWebアプリケーションがあります。

MainWindow.xlbの私のアプリケーションconsictsは、NativeViewControllerで満たされています。

Native View Controller.mi内には、次のコードがあります。

http://pastebin.com/xXFc0JCW

ここにコピーして貼り付けるのは面倒に見えました。

どこが間違っているのか、なぜアプリケーション/UIWebViewが常に縦向きのままであるのか理解できないようです。

iOS開発は初めてです。

完全なソースコード:https ://www.dropbox.com/s/i9woti5ptecr9n4/Native.zip

4

2 に答える 2

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 のチェックを外しました。それ以外の場合は、ページをスクロールして Hello World を表示する必要がありました。

向きのメソッドを削除し、ウィンドウの RootviewController を ViewController に設定しました。ウィンドウに RootVieController がありませんでした。

于 2013-01-16T10:58:59.893 に答える
1

率直に言って、あなたのコード スニペットには何の問題もありません。しかし、最近 iOS6 で導入された変更がありました。私があまり間違っていなければ、現在の SDK でビルドされたアプリでは shouldRotateToInterfaceOrientation が呼び出されなくなります。その代わりに、info.plist でサポートされているインターフェイスの向きを定義し、整数でビットマスクを返すメソッド supportedInterfaceOirentations を上書きすることで、View Controller でその設定を上書きすることができます (どのように現代的な ... :)

ドキュメントから:

ビューの回転の処理 iOS 6 では、アプリは、アプリの Info.plist ファイルで定義されたインターフェイスの向きをサポートします。View Controller は supportedInterfaceOrientations メソッドをオーバーライドして、サポートされている向きのリストを制限できます。通常、システムは、ウィンドウのルート ビュー コントローラー、または画面全体に表示されるビュー コントローラーでのみ、このメソッドを呼び出します。子View Controllerは、親View Controllerによって提供されたウィンドウの一部を使用し、どの回転がサポートされているかに関する決定に直接参加しなくなりました。アプリの方向マスクとビュー コントローラーの方向マスクの交点は、ビュー コントローラーを回転できる方向を決定するために使用されます。

ここで間違っている場合は修正してください。

于 2013-01-16T09:35:05.713 に答える