我在下面创建了一个自定义UIWebView
课程。
TestLib
派生自UIWebView
。
我想拨打我的自定义webViewDidFinishLoad
课程的UIWebView
。
[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
}
答案 0 :(得分:1)
如果您尝试以编程方式创建UIWebView,则不应该调用默认初始值设定项(而是使用initWithFrame)。
您需要将加载请求移至视图控制器的viewDidLoad方法:
- (void)viewDidLoad {
[super viewDidLoad];
[myWebView setDelegate:self];
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
NSURLRequest *request =[NSURLRequest requestWithURL:url];
[myWebView loadRequest:request];
}
@synthesize myWebView;
- (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中的自定义类从UIWebView更改为TestLib。