1

我已经看到了许多UIWebViewDelegates关于 stackoverflow 的问题,但它们要么与我的问题不同,要么让我无法理解(或两者兼而有之)。

我的UIWebView负载很好,但是如果用户在加载后单击 webview 中的链接,我希望能够采取某些操作。在viewDidLoad我已经设置self.webV.delegate = self;webV是实例化GHWebView我的UIWebView类的属性)。在视图控制器类中,我添加了以下代码,仅作为我开始使用实际方法之前的测试:

-(BOOL) webView:(GHWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if (navigationType==UIWebViewNavigationTypeLinkClicked)
{
    NSLog(@"Yes!");
}
else
{
    NSLog(@"No.");
}
return YES;
}

我想做的是得到“是的!” 如果用户单击加载的 web 视图中的链接,则记录。但是当 webview 加载并且我点击其中的一个链接时,没有 NSLog。我应该怎么做?

(提前感谢您的帮助以及您对尚不了解代表的人的耐心等待......)

编辑:好的,这就是我认为 GHWebView 中的相关代码。 到目前为止,GHWebView.h我声明了属性 requ ( NSURLRequest)、 conn ( NSURLConnection) 和 urlData ( NSData) 以及一个方法-(void)loadWebViewWithbaseURLString:bus withURLString:us. 然后在GHWebView.m我定义方法:

-(void)loadWebViewWithbaseURLString:bus withURLString:us
{
self.requ = [NSURLRequest requestWithURL:[NSURL URLWithString:us] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval: 20];
self.conn=[[NSURLConnection alloc] initWithRequest:self.requ delegate:nil];
NSError *error=nil;
NSURLResponse *resp=nil;
if (self.conn)
{
    self.urlData = [NSURLConnection sendSynchronousRequest: self.requ returningResponse:&resp error:&error];
    NSString *htmlString = [[NSString alloc] initWithData:self.urlData encoding:NSUTF8StringEncoding];
    [self loadHTMLString:htmlString baseURL:[NSURL URLWithString:bus]];
}
else
{
    UIAlertView *alert = [[UIAlertView alloc] init];
    alert.title = @"Unfortunately, I seem to be having a hard time connecting to the Internet.  Would you mind trying again later?  I'll make it worth your while, I promise.";
    [alert show];
}
}

我知道我必须声明一个委托并在我的头文件中添加一个协议——我认为这将涉及添加类似的代码

@property (nonatomic, assign) id<UIWebViewDelegate> delegate;

@protocol GHWebViewDelegate <UIWebView>
-(void)loadWebViewWithbaseURLString:bus withURLString:us;
@end

但是当我回到实现文件并尝试将方法中的selfs 替换为 s 时,我得到了错误。我该怎么办?self.delegate-(void)loadWebViewWithbaseURLString:bus withURLString:usproperty not found on object of type

4

1 回答 1

1

您提到您正在将委托设置为负责实例化GHWebView类的 ViewController。虽然这很好,但我的问题是你的GHWebView类中是否有一个部分,你将这个对象分配为的委托,UIWebView以便它可以响应-(BOOL)webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType方法然后调用,webView:(GHWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType以便当这个协议方法被调用时你的委托(在你的情况下你的 ViewController) 可以参加电话会议吗?

于 2012-08-21T03:37:06.430 回答