只是想知道是否有办法将 keyevents 或文本发送到 webview。
我有一个应用程序,用户可以单击一个按钮来执行特定任务。需要填充用户单击 webview 内的文本框的按钮。
我可以处理按钮单击事件和所有这些,但只是想知道我是否可以将该文本传递给 webview。
我在谷歌上搜索过,但还没有找到任何解决方案。也许我错过了一些东西。
无论如何提前谢谢。
只是想知道是否有办法将 keyevents 或文本发送到 webview。
我有一个应用程序,用户可以单击一个按钮来执行特定任务。需要填充用户单击 webview 内的文本框的按钮。
我可以处理按钮单击事件和所有这些,但只是想知道我是否可以将该文本传递给 webview。
我在谷歌上搜索过,但还没有找到任何解决方案。也许我错过了一些东西。
无论如何提前谢谢。
HTML 方面:
假设以下是在您的 Objective-C 方法中调用它时触发的 javascript 方法..即,本机端。
<script type="text/javascript">
var htmlTouch = 0;
//following is the function that you've assigned for a HTML button.
function button1_click()
{
htmlTouch =1; //The reason why i am setting the htmlTpuch=1,is just to identify whether it's native touch or HTML touch.
}
//javascrip function which we are going to call from oObjective-c
function toCallFromiOS()
{
if( htmlTouch == 1 )
{
alert("its a html touch,so pass any values to native code here.");
return 'urText';
}
}
//To reset the touch for next use.
function resetTheHTMLtouch()
{
htmlTouch = 0;
}
</script>
原生端:
创建 UIWebview 来加载上面的 html(我现在在本地做)。
self.webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"test" ofType:@"html"] isDirectory:NO]]];
现在将手势委托添加到整个 webview。
UITapGestureRecognizer *tapGestureDown = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture)];
tapGestureDown.numberOfTapsRequired = 1;
tapGestureDown.delegate = self;
[self.webView addGestureRecognizer:tapGestureDown];
//handleTapGesture 是本机方法,在“检测是否是本机触摸时,您想要执行什么?”
-(void)handleTapGesture
{
NSLog(@"Touch is native");
}
现在我们都准备好了。下一步是实现调用的委托
-shouldRecognizeSimultaneouslyWithGestureRecognizer:==>which returns BOOL value.
在检测到 webview 上的触摸事件时,实现的委托函数被调用。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
如果您像这样添加上面的代码,在点击 webview 时,上面的代理会被调用 N 次(有时是 8、9、13 等)。唯一的解决方案是我们应该能够知道触摸的状态(是否结束或开始),重置下一次通话的触摸事件。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
NSString *javastr=[self.webView stringByEvaluatingJavaScriptFromString:@"toCallFromiOS();"];
NSLog(@"This is return string from javascript==>%@",javastr);
if((otherGestureRecognizer.state==UIGestureRecognizerStateEnded && [javastr hasPrefix:@"urText"]))
{
javastr= [self.webView stringByEvaluatingJavaScriptFromString:@"resetTheHTMLtouch();"];
return NO;
}
return YES;
}
如果javastr
返回任何值(文本),则它是 HTML 触摸,否则它是原生触摸,“handleTapGesture”被调用。
更多详细信息请查看我的博客==>在 UIWebView 上感受 HTML 触摸和 Native 触摸的区别
希望这可以帮助你。快乐的编码......
所以我完全忘记了 iOS 我可以简单地使用 javascript。以防万一将来其他人也有同样的问题。我在这里找到了解决方案
http://iphoneincubator.com/blog/windows-views/how-to-inject-javascript-functions-into-a-uiwebview
这允许您将文本输入到 webview 的文本框和其他地方。
谢谢大家。