2012-10-11 79 views
3

我有一個簡單的筆尖與幾個按鈕和UIWebView我想要顯示一些HTML。我想根據HTML內容更改UIWebView中的高度。但我不能。如何根據HTML內容動態改變UIWebView的高度?

我的筆尖是這樣的: My nib

mainViewController.h

#import <UIKit/UIKit.h> 

@interface ibecViewController : UIViewController <UIWebViewDelegate> 
@property (weak, nonatomic) IBOutlet UIWebView *webV; 

@end 

我用sizeToFit,但它不工作。我mainViewController.m

#import "ibecViewController.h" 

@interface ibecViewController() 

@end 

@implementation ibecViewController 
@synthesize webV; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSString *myHTML = @"<html><body><h1>Hello, world!</h1><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p></body></html>"; 
    [webV loadHTMLString:myHTML baseURL:nil]; 

    [webV sizeToFit]; 
} 

- (void)viewDidUnload 
{ 
    [self setWebV:nil]; 
    [super viewDidUnload]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 

- (void)webViewDidStartLoad:(UIWebView *)webView 
{ 
    NSLog(@"123"); 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSLog(@"456"); 
} 

@end 

我的第二個問題:爲什麼不把方法webViewDidStartLoadwebViewDidFinishLoad工作?儘管我已經寫過我的控制器符合UIWebViewDelegate。我是iOS新手。 WebView的高度不變。和我的應用程序是這樣的: My app

回答

0

答到第一個問題:

嘗試使用[webV setScalesPageToFit:YES];函數,而不是sizeToFit。 Html內容將自動調整爲webview大小。我猜這個功能只存在於更高版本的ios中。

對第二個問題的回答: 您必須將webview對象與表示視圖控制器(ibecviewcontroller)的自我對象委託給其中的webview被定義。委託完成後,您可以使用委託功能。如果您是通過Xib完成的,那麼您應該將本例中爲webV的webview對象與IB中的文件所有者對象或圖標連接起來。

希望可以幫到..

+0

謝謝你的回答。但第一個不是我想要的。使用setScalesPageToFit:YES不會更改我的WebView,但會更改HTML比例。它變得更小。對於第二個我寫的方法(void)viewWillAppear:(BOOL)動畫 {[self webV] setDelegate:self]; (void)viewWillAppear:(BOOL)animated {[self webV] setDelegate:self]; } –

1

我找到了解決辦法。在我ibecViewController.m我已經寫方法

- (void)viewWillAppear:(BOOL)animated 
{ 
    [[self webV] setDelegate:self]; 
} 

和它的作品爲代表。我的方法webViewDidStartLoadwebViewDidFinishLoad也開始工作。然後我實施了

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    [webV sizeToFit]; 
} 
+0

我也看到了一個建議(不記得在哪裏)爲onload事件注入JS以更好地通知obj-c工作,因爲據推測,webViewDidFinishLoad有時會忘記被解僱。雖然對這些說法不太確定,但它們很健全。比對不起更好的安全:) –

相關問題