如何调用我的自定义 uiwebview class 的 webViewDidFinishLoad?

How to call webViewDidFinishLoad of my custom uiwebview class?

我在下面定制UIWebViewclass

TestLib 来自 UIWebView.

我想调用 webViewDidFinishLoad 我的自定义 UIWebView class。

[TestLib.h]
@interface TestLib : UIWebView
{
}
@end

[TestLib.m]


[ViewController.h]
#import "TestLib.h"

@interface ViewController : UIViewController<UIWebViewDelegate>

@property (strong, nonatomic)TestLib *myWebView;


[ViewContoroller.m]

@implementation ViewController
@synthesize myWebView

- (void) viewDidLoad {
   myWebView = [[TestLib alloc] init];
   [myWebView setDelegate: self];

   ...
}

- (void)webViewDidFinishLoad: (UIWebView *)webView {
    // not call
}
  1. 如果您尝试以编程方式创建 UIWebView,则不应调用默认初始化程序(改用 initWithFrame)。

  2. 您需要将加载请求移动到视图控制器的 viewDidLoad 方法:

- (void)viewDidLoad {
    [super viewDidLoad];

    [myWebView setDelegate:self];
    NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
    NSURLRequest *request =[NSURLRequest requestWithURL:url];
    [myWebView loadRequest:request];
}
  1. 添加分号合成属性:
@synthesize myWebView;
  1. webViewDidFinishLoad 方法应如下所示:
- (void)webViewDidFinishLoad:(UIWebView *)webView {

    // TestLib *customWebView = (TestLib *)webView; - type cast if needed
    NSLog(@"Webpage loaded OK");

}

如果您通过 Interface Builder 创建 UIWebView,您将希望完全省略 init 方法,只需将您的 myWebView 属性 作为 IBOutlet 连接:

@property (nonatomic, retain) IBOutlet TestLib *myWebView;

此外,您需要将 Interface Builder 中的自定义 class 从 UIWebView 更改为 TestLib。