在我的应用中显示网页实际网址的问题

时间:2012-01-10 19:29:39

标签: iphone objective-c ios ipad nsurl

我正在制作iPad浏览器,我有一点问题。例如,当我去谷歌时,我在textField中写了google方向。问题是,当我更改网页时,它仍然显示http://www.google.com/。这是我的代码:

-(IBAction)buttonpressed2:(id)sender {

    url = [NSURL URLWithString:[textField text]];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [webView loadRequest:request];
    [webView isEqual:textField.text];
}

如何让textField显示我正在观看的页面,而不是显示在该字段中的第一个网址?

2 个答案:

答案 0 :(得分:2)

首先,确保在设置webView时,将UIWebViewDelegate分配给self

然后,实现委托方法:webViewDidFinishLoad,如下:

- (void)webViewDidFinishLoad:(UIWebView *)webView {

    NSURLRequest *currentRequest = [webView request];
    NSURL *currentURL = [currentRequest URL];

    //This will log the current url
    NSLog(@"Current URL is %@", currentURL.absoluteString);

    //Then to display it in the textField
    textfield.text = currentURL.absoluteString;
 }

修改

委托是一组特殊的方法,用于等待事件发生。当该事件发生时,调用适当的方法。上面的方法是UIWebView的委托方法之一 - 当webView发生特定事件时,在这种情况下webViewDidFinishLoad时,该方法被自动调用,我们可以这样响应。为了设置代理,我们可以采用以下两种方式之一:

  1. 如果您在代码中创建了webView,则可能是这样的:

    UIWebView *webView = [[UIWebView alloc] init...]
    

    然后您需要做的就是添加以下代码行:

    webView.delegate = self;
    
  2. 但是,您可能还在界面构建器中创建了webView - 如果是这种情况,请单击webView和链接器选项卡,然后将委托选项拖到“文件所有者”。

  3. 就是这样。

答案 1 :(得分:0)

您的课程应该实施UIWebViewDelegate协议。然后在方法webView:shouldStartLoadWithRequest:navigationType:中,您可以执行此操作:

[textField setText:[[request URL] absoluteString]];

这样,只要您导航到新网址,textField中的值就会更新。