2013-04-26 128 views
5

我嘗試使用給定內容計算UIWebView的大小,但不顯示視圖。我只需要知道尺寸。UIWebView:不會調用委託

我的問題:當我執行代碼時,不調用UIWebView的委託。爲什麼?

MessageSizeCaluclator.h

#import < Foundation/Foundation.h> 

@class Message; 

@interface MessageSizeCaluclator : NSObject <UIWebViewDelegate> 

- (id)initWithMessage:(Message*)message; 
- (void)saveSize; 

@end 

MessageSizeCaluclator.m

#import "Message.h" 
#import "MessageSizeCaluclator.h" 


@interface MessageSizeCaluclator() <UIWebViewDelegate> 

@property (strong, nonatomic) Message* message; 
@property (strong, nonatomic) UIWebView* webView; 

@end 


@implementation MessageSizeCaluclator 

@synthesize message = _message; 
@synthesize webView = _webView; 


- (id)initWithMessage:(Message*)message 
{ 
self = [super init]; 

if (self) { 
    _message = message; 

    // WebView 
    _webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)]; 
    _webView.delegate = self; 
} 

return self; 
} 

- (void)saveSize 
{ 
NSLog(@"%s message = %@", __PRETTY_FUNCTION__, _message.text); 

[_webView loadHTMLString:[NSString stringWithFormat:@"<div style='font-family:Helvetica;font-size:13px;'>This is a test</div>", _message.text] 
           baseURL:nil]; 
} 

#pragma mark - Web view delegate 

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 
{ 
NSLog(@"%s", __PRETTY_FUNCTION__); 
} 

- (void)webViewDidStartLoad:(UIWebView *)webView 
{ 
NSLog(@"%s", __PRETTY_FUNCTION__); 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
NSLog(@"%s", __PRETTY_FUNCTION__); 
} 

@end 

實施

MessageSizeCaluclator* messageSizeCalculator = [[MessageSizeCaluclator alloc] initWithMessage:message]; 
    [messageSizeCalculator saveSize]; 
+0

在你的代碼被調用的時候,沒有任何視圖,你沒有在viewDidLoad中做這件事的原因? – Tim 2013-04-26 14:31:06

+0

@Tim'MessageSizeCaluclator'不是視圖控制器,它只是一個實例化Web視圖的對象。 – Caleb 2013-04-26 14:38:21

+0

啊我的錯誤,沒有閱讀接口聲明。 – Tim 2013-04-26 15:23:29

回答

7

你的UIWebView添加一些的UIView,使其幀屏幕外(所以用戶無法看到它)。如果UIWebView不在應用程序的視圖層次結構中,委託方法從不會調用。

+1

+1這聽起來很正確。在Web視圖是視圖層次結構的一部分之前,加載數據只是浪費時間和電池電量。 – Caleb 2013-04-26 14:49:20

+0

或將其alpha設置爲0 – ChrisH 2013-04-26 14:55:18

相關問題