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

时间:2012-01-16 05:31:23

标签: iphone objective-c ios ipad uiwebview

我有一个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 个答案:

答案 0 :(得分:4)

实际上UIWebView有一个UIScrollView。您可以使用UIScrollView属性访问UIWebView中的scrollView。然后获取contentOffset的{​​{1}}。最后,您获得了scrollView的{​​{1}}以及相对于contentOffset的图像位置,您可以计算出您想要的点数。

试试这段Javascript:

下面的stringByEvaluatingJavaScriptFromString:

scrollView

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