UIWebView:不会调用委托

问题描述:

我尝试使用给定内容计算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

你的UIWebView添加一些的UIView,使其帧屏幕外(所以用户无法看到它)。如果UIWebView不在应用程序的视图层次结构中,委托方法从不会调用。

+1

+1这听起来很正确。在Web视图是视图层次结构的一部分之前,加载数据只是浪费时间和电池电量。 – Caleb 2013-04-26 14:49:20

+0

或将其alpha设置为0 – ChrisH 2013-04-26 14:55:18