向uiwebview做一个touchesbegan活动

时间:2013-12-16 21:02:12

标签: ios xcode uiview uiwebview touchesbegan

我希望你能帮助我,先为我糟糕的英语道歉。 我想在iOS中的uiwebview上点击指定点(x / y)。我尝试过

(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { }

(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [webview touchesBegan:touches withEvent:event]; }

但我还没有工作。 uiwebview是uiview的子视图,我想。

你能帮帮我吗?

来自德国的问候。

2 个答案:

答案 0 :(得分:0)

只需调用这样的javascript函数:

[myWebView stringByEvaluatingJavaScriptFromString:"/*JS Code goes here*/"];

而不是/*JS Code goes here*/ 键入一个java脚本代码,通过触发所需的x,y位置来执行您想要执行的操作。我假设您可以控制网页内容,如果没有请评论,我会添加更复杂的解决方案。

如果要调用在页面内容中包含的iframe内定义的函数,则需要定义两个函数:

iframe页面中的

1- JS函数,作为iframe标记名称的来源显示此函数iFrameFunc()

2- JS在父HTML页面中的函数名称为parentFunc()

3- parentFunc应该通过id或类选择器获取iframe的句柄并调用iframeFunc()

4- Obj-c会将[UIWebview stringByEvaluatingJavaScriptFromString]调用到parentFunc

答案 1 :(得分:0)

我将UIWebView子类化,并且只是在2级深度的子​​视图中“浸入”它的手势识别器(你可以递归地进行,但这足以支持iOS6-7)。 然后,您可以使用触摸位置和手势识别器的状态执行任何操作。

for (UIView* view in self.subviews) {
    for (UIGestureRecognizer* recognizer in view.gestureRecognizers) {
        [recognizer addTarget:self action:@selector(touchEvent:)];
    }
    for (UIView* sview in view.subviews) {
        for (UIGestureRecognizer* recognizer in sview.gestureRecognizers) {
            [recognizer addTarget:self action:@selector(touchEvent:)];
        }
    }
}