我的视图中有UIWebView
和UITextField
,但我遇到了问题。
问题是当我浏览不同的网页时,如何自动替换UITextField
中的网页网址?
答案 0 :(得分:3)
使用 UIWebView 实例的以下属性:
@property(nonatomic, readonly, retain) NSURLRequest *request
因此,您可以通过以下方式获取与网络视图相关联的当前 NSURLRequest :
NSURLRequest* urlRequest = myWebView.request;
然后,您可以使用以下实例方法获取 NSURL 的关联实例:
- (NSURL *)URL
因此,您现在可以使用以下代码从UIWebView获取 NSURL 对象:
NSURL* url = [myWebView.request URL];
要将此转换为字符串,您可以使用 NSURL 的absoluteString
或relativeString
实例方法。对于这个例子,我将使用absoluteString。
NSString* urlString = [[myWebView.request URL] absoluteString];
现在我们可以使用简单的文本属性设置 UITextField 的文本:
myTextField.text = [[myWebView.request URL] absoluteString];
所以现在我们需要做的就是确保在正确的时间调用前一行代码,以便在页面更改时使用url文本更新文本字段。为此,我们需要使用一个类,它是 UIWebView 的委托(因此符合 UIWebViewDelegate 协议)。如果您不确定如何使用委托,我强烈建议您阅读委托设计模式和Apple Developer文档,因为它在整个iOS开发中使用。
在 UIWebViewDelegate 类中,您需要按如下方式实现以下方法:
- (void)webViewDidStartLoad:(UIWebView *)webView
{
myTextField.text = [[myWebView.request URL] absoluteString];
}
这将确保文本字段始终显示上次开始加载的页面的URL(如果您希望在不同的时间更新文本字段,还有其他 UIWebViewDelegate 方法)。
希望这有帮助。
答案 1 :(得分:0)
在.H文件中你声明webview,textfield和IbAction来浏览你输入的文字,它看起来像
{
IBOutlet UIWebView *web;
IBOutlet UITextField *text;
}
-(IBAction)search:(id)sender;
和.M文件在IBaction中查找
-(IBAction)search:(id)sender{
NSLog(@"%@",text.text);
NSString *urlAddress = [NSString stringWithFormat:@"http://%@",text.text];
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[web loadRequest:requestObj];
}
肯定会有效
答案 2 :(得分:0)
webview委托中有一个方法- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
。
此方法将在Web视图中调用每个请求加载。
在此您可以获取请求对象。从那以后你可以得到网址。
您可以直接在此方法中将网址粘贴到textField中。
此致
萨蒂亚
答案 3 :(得分:0)
你应该定义 - webViewDidStartLoad:UIWebView的id委托方法:
- (void)webViewDidStartLoad:(UIWebView *)webView
{
yourUITextField.text = [[webView.request URL] path];
}