0

我正在创建一个具有 web 视图的应用程序。当用户单击 webview 中的链接或按钮时,我希望能够获取新的 url,并编辑新的 url。

shouldStartLoadWithRequest 应该可以解决问题,但是当我单击链接时永远不会调用该方法。我找不到为什么这不起作用。

我在某处读到需要添加这一行:

webView.delegate = (id)self;

我试过了,仍然遇到同样的问题。请帮忙

AppDelegate.m

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *currentURL = [[request URL] absoluteString] ;

    NSLog(@"Url: %@", currentURL);
    return YES;
}

控制器.m

- (void)viewDidLoad
{
    webView.delegate = (id)self;
    NSString *tokenString = @"123";
    [super viewDidLoad];

    NSString *fullURL = [[NSString alloc] initWithFormat:@"http://192.168.1.69:8888/webapp/test.php?uid=%@", tokenString];
    NSURL *url = [NSURL URLWithString:fullURL];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [webView loadRequest:requestObj];
}
4

2 回答 2

1

如果您的Controller实例将自己添加为委托,那么您添加到AppDelegate实例的方法将永远不会被调用。

将该shouldStartLoadWithRequest方法移到您的Controller类中。

于 2013-07-04T19:31:24.390 回答
0

您已将视图控制器设置为 Web 视图的委托。但是你已经在我们的应用程序的委托中实现了 UIWebView 委托方法。

尝试在您的视图控制器中实现该委托方法。您的视图控制器是您的网络视图的代表。

于 2013-07-04T19:34:03.540 回答