我正在制作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
显示我正在观看的页面,而不是显示在该字段中的第一个网址?
答案 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
时,该方法被自动调用,我们可以这样响应。为了设置代理,我们可以采用以下两种方式之一:
如果您在代码中创建了webView,则可能是这样的:
UIWebView *webView = [[UIWebView alloc] init...]
然后您需要做的就是添加以下代码行:
webView.delegate = self;
但是,您可能还在界面构建器中创建了webView - 如果是这种情况,请单击webView和链接器选项卡,然后将委托选项拖到“文件所有者”。
就是这样。
答案 1 :(得分:0)
您的课程应该实施UIWebViewDelegate
协议。然后在方法webView:shouldStartLoadWithRequest:navigationType:
中,您可以执行此操作:
[textField setText:[[request URL] absoluteString]];
这样,只要您导航到新网址,textField中的值就会更新。