как найти положение изображения в UIWebView - PullRequest
2 голосов
/ 16 января 2012

У меня есть 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 Ответ

4 голосов
/ 16 января 2012

На самом деле UIWebView имеет UIScrollView. Вы можете получить доступ к UIScrollView в UIWebView, используя свойство scrollView. Тогда получите contentOffset из scrollView. Наконец, вы получили contentOffset из scrollView и положение изображения относительно 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);

вы вернете положение изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...