我有一个 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 无关,而是与内容 View 相关。假设图像的位置向下 1000 像素,但我现在正在向下浏览 UIWebView 的一半,因此我想要看到的数字是 200。我希望这是有道理的
最佳答案
实际上UIWebView
有一个UIScrollView
。您可以使用 scrollView
属性访问 UIWebView
中的 UIScrollView
。然后获取scrollView
的contentOffset
。最后,你得到了scrollView
的contentOffset
以及图像相对于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);
您将获得返回的图像位置。
关于iphone - 如何找到 UIWebView 中图像的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8876104/