我以前从未真正使用UIWebView
,所以我不确定从哪里开始。实际上,我正在与正在为我正在开发的应用程序构建此Web平台的开发人员合作。用户应填写WebView
中的表单。其中一个字段是他们想要购买的票证的目的地。在应用程序中,我们已经有一个ViewController
布局很好,允许用户输入自定义目标或从预定义列表中选择。单击WebView中的文本字段时,是否可以显示此ViewController
?然后,当用户完成时,该字段将填充所选目的地。有没有更好的方法来做到这一点(没有加载Web开发人员),我只是愚蠢?
就像我说的那样,我以前从未真正使用过这种方式的UIWebView,因为我通常喜欢让我的应用程序100%原生,但这里是我想象它可能有用的方式:
-(void)someMethodThatsCalledWhenTextFieldIsPressed {
AttachDestinationViewController *vc = [[AttachDestinationViewController alloc] init];
[self presentViewController:vc animated:YES completion:nil];
}
然后在AttachDestinationViewController中我们会做类似的事情:
-(void)didFinish {
CustomUIWebViewClass *parentViewController = (CustomUIWebViewClass *)self.parentViewController;
parentViewController.propertyForTextField.text = self.locationEntered.text;
[self dismissViewControllerAnimated:YES completion:nil];
}
如果它是一个普通的ViewController,那就是我想象的那样,但是,我完全不知道如何调用-(void)someMethodThatsCalledWhenTextFieldIsPressed
,也不知道如何在UIWebView中为textField创建propertyForTextField
。
任何帮助都将不胜感激,敬意,
迈克
答案 0 :(得分:2)
首先,您需要在UIWebView
类似的东西:
<a href="#" class="buttonStyle">Click me!</a>
点击html
中的链接(按钮)执行自定义代码然后实施shouldStartLoadWithRequest
。
您的按钮链接应如下所示:
<a href="button://dosomething" class="buttonStyle">Click me!</a>
现在实现shouldStartLoadWithRequest
,如下所示:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
// only do something if a link has been clicked...
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
// check if the url requests starts with our custom protocol:
if ([[[request URL] absoluteString] hasPrefix:@"button://"])
{
[self CallYourMethodButton];
return NO;
}
}
return YES;
}
此方法将检测您根据标题单击的href按钮,此处您可以调用按钮的方法。
编辑:
那么迈克那么就像从表格中输入数据一样吧?然后,您需要获取文本字段的元素名称或元素ID。请通过以下链接: -
Finding and auto-filling HTML login forms in a UIWebView using JavaScript