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

时间:2015-05-28 02:26:08

标签: ios objective-c uiwebview

我在下面创建了一个自定义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
}

1 个答案:

答案 0 :(得分:1)

  1. 如果您尝试以编程方式创建UIWebView,则不应该调用默认初始值设定项(而是使用initWithFrame)。

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

  3. - (void)viewDidLoad {
        [super viewDidLoad];
    
        [myWebView setDelegate:self];
        NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
        NSURLRequest *request =[NSURLRequest requestWithURL:url];
        [myWebView loadRequest:request];
    }
    
    1. 添加分号以合成属性:
    2. @synthesize myWebView;
      
      1. webViewDidFinishLoad方法应如下所示:
      2. - (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。