2

基本的に、タブがUIWebViewを含む異なるViewController間を行き来するUINavigationControllerであるTabBarであるアプリケーションがあります。私の問題は、UIWebViews のボタンをクリックすることはできますが、画面よりも大きい場合にコンテンツをスクロールできないことです。

TabController を作成しています

tabBarController = [[MainTabBarController alloc] init];
[tabBarController setDelegate:self];

タブを切り替えると、次のコードがあります。

WebViewController *wvc = [[WebViewController alloc] initWithNibName:@"WebController" bundle:nil];
UIWebView *wv = [[UIWebView alloc] init];

[wv setUserInteractionEnabled:YES];
[wvc setTitle:[nc title]];
[wv setDelegate:self];
[wv loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:requestURL]]];
[wvc setWebpage:wv];
[wvc setView:wv];
[nc pushViewController:wvc animated:NO];
NSLog(@"NC.viewcontroller count: %d", [nc.viewControllers count]);
[nc setLastURL:requestURL];
[wvc startLoaderIndicator];

[wv release];
[wvc release];
requestOk = YES;

そして、UIWebViews の 1 つ内のリンクをクリックすると、次のようになります。

ItemNavigationController *nc = (ItemNavigationController *)[tabBarController selectedViewController];
WebViewController *wvc = [[WebViewController alloc] initWithNibName:@"WebController" bundle:nil];
UIWebView *wv = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,480)];
//wvc.view = wvc.sView;
[wvc setTitle:[nc title]];
[wv setDelegate:self];
[wv loadRequest:request];
[wvc setWebpage:wv];
[wvc setView:wv];
[nc pushViewController:wvc animated:NO];
NSLog(@"NC.viewcontroller count: %d", [nc.viewControllers count]);
[nc setLastURL:request.URL.absoluteString];
[wvc startLoaderIndicator];

[wv release];
[wvc release];
requestOk = YES;

WebView がスクロールしないことを除いて、すべてが完全に機能します。次のようになります。 スクリーンショット

これらのページはスクロールしません

4

3 に答える 3

0

クラスを作成WebViewControllerし、.m 内にviewDidLoad追加します。

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIWebView *wv = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,480)];
    [wv setDelegate:self];
     NSURL*url = [NSURL URLWithString:@"http://www.link.com/twitter_iPhone.php"];
    [wv loadRequest:[NSURLRequest requestWithURL:url]];
    [self.view addSubview:wv];
}
于 2012-07-12T09:29:20.837 に答える
0

このコードブロックで最初に気に入らないこと...

WebViewController *wvc = [[WebViewController alloc] initWithNibName:@"WebController" bundle:nil];
UIWebView *wv = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,480)];
wvc.view = wvc.sView;

代わりに、サブビューを作成しviewDidLoadてビュー コントローラーのブロック内のビューに追加します。さらに、IB を利用して XIB 経由で WebView を追加し、IBOutlet とデリゲートを接続するだけです。

このようにすることに固執する場合は、ビューを上書きしないでください。

[wvc.view addSubview:wv];

私は単純な WebViewController でこれを書きました:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight;

    UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
    webView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:webView];
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://news.google.com"]]]; 
}

次のように AppDelegate から呼び出します。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    self.window.backgroundColor = [UIColor whiteColor];

    CPWebController *webController = [[CPWebController alloc] init];

    CPNavController *navController = [[CPNavController alloc] initWithRootViewController:webController];
    [self.window addSubview:navController.view];

    [self.window makeKeyAndVisible];
    return YES;
}

サイズが正しく、ナビゲーション バーがあり、正しくスクロールします。コードを簡潔にするために、リリースがないことをご容赦ください。

于 2012-07-12T09:58:49.417 に答える
0

私が見ることができるものから、ここで固定の高さで設定しています:

UIWebView *wv = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,**480**)];

そのため、コンテンツのサイズは 480 しかないため、スクロールする場所がありません。(0,0,320, 1000 );のようなものを試してください。それが問題かどうかをテストする場合は、高さをコンテンツサイズに設定して動的にします

于 2012-07-12T10:10:18.540 に答える