如何在 UIWebView 中找到图像的位置

Posted

技术标签:

【中文标题】如何在 UIWebView 中找到图像的位置【英文标题】:how do I find the position of an image in a UIWebView 【发布时间】:2012-01-16 05:31:23 【问题描述】:

我有一个 UIWebView,其中有一个 UITapGestureRecognizer,基本上在我的点击手势识别器中我有:

- (CGPoint) pointsForImage:(UIGestureRecognizer *)sender

    CGPoint pt = [sender locationInView:self];

    NSString * offsetTop = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).offsetTop", pt.x, pt.y
                          ];

    NSString * offsetLeft = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).offsetLeft", pt.x, pt.y
                      ];

    NSString * scrollTop = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).parentNode.scrollTop", pt.x, pt.y
                              ];

    NSString * scrollLeft = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).parentNode.scrollLeft", pt.x, pt.y
                             ];


    float x = [[self stringByEvaluatingjavascriptFromString:offsetTop] floatValue] - [[self stringByEvaluatingJavaScriptFromString:scrollTop] floatValue];
    float y = [[self stringByEvaluatingJavaScriptFromString:offsetLeft] floatValue] - [[self stringByEvaluatingJavaScriptFromString:scrollLeft] floatValue];

    CGPoint point = CGPointMake(x, y);
    return point;

基本上我要做的是找到图像的左上角 x 和 y 位置。不是相对于 UIWebView 而是相对于内容视图。所以说图像的位置向下 1000 像素,但我现在正在浏览 UIWebView 一半,因此我想看到的数字是 200。我希望这是有道理的

【问题讨论】:

【参考方案1】:

实际上UIWebView 有一个UIScrollView。您可以使用scrollView 属性访问UIWebView 中的UIScrollView。然后获取scrollViewcontentOffset。最后得到scrollViewcontentOffset和图片相对于UIWebView的位置,就可以计算出你想要的点了。

试试这段 Javascript:

stringByEvaluatingJavaScriptFromString 下面:

function getPosition(element)
    var el = element;
    var pos = [el.offsetLeft, el.offsetTop];
    var parent = el.offsetParent;
    if (parent != el)  
      while (parent)   
        pos[0] += parent.offsetLeft; 
        pos[1] += parent.offsetTop; 
        parent = parent.offsetParent;
      
    
    return pos;

getPosition(YourImageElement);

您将获得返回的图像位置。

【讨论】:

好吧 contentOffset.y 似乎是正确的。但是我如何获得图像位置?我觉得我上面的做法不正确,这里的offsetTop总是0。 您的 javascript 似乎不正确。您应该首先使用 getElementById 之类的方法获取图像,然后尝试找到图像的偏移量。 document.elementFromPoint(%f, %f) 是对我的图片的引用 您能否给我一个代码示例,说明如何使用 stringByEvaluatingJavaScriptFromString 执行该操作?我发现使用它很难返回一个值 编辑了代码,以便您可以使用 stringByEvaluatingJavaScriptFromString 来获取位置。

以上是关于如何在 UIWebView 中找到图像的位置的主要内容,如果未能解决你的问题,请参考以下文章

如何将其他文本附加到 UIWebView

如何从 iOS 照片库中获取图像并在 UIWebView 中显示

如何在 iOS 的某些文件输入字段上获取 UIWebView 中 UIImagePicker 选择的图像?

如何从精灵图像中找到图像的像素位置[关闭]

如何控制 UIWebView 上的触摸? (苹果手机)

如何获取 UIWebView 中元素的位置?