2013-01-15 122 views
3

UIWebView我需要訪問DOM元素(從SVG圖)的屬性,當我longTap它。要做到這一點,我添加了一個UILongPressGestureRecognizer如下:UIWebView,縮放&elementFromPoint

UILongPressGestureRecognizer* longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action: @selector(longPress:)]; 
[self.webView addGestureRecognizer: longPress]; 

當我長按上來看,處理程序被調用從我所說的JS功能:

- (void) longPress: (UIGestureRecognizer *) gesture { 
    CGPoint curCoords = [gesture locationInView:self.webView]; 

    if (!CGPointEqualToPoint(curCoords, self.lastLongPress)) { 
     self.lastLongPress = curCoords; 
     [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"longPress(%f, %f)", curCoords.x, curCoords.y]]; 
    } 
} 

這是我的JS處理:

function longPress(x, y) { 

    x = x + window.pageXOffset; 
    y = y + window.pageYOffset; 

    var element = svgDocument.elementFromPoint(x, y);                                                       
    alert(element.localName + ' ' + x + ' ' + y + ' ' + window.innerWidth + ' ' + window.innerHeight); 
} 

但是似乎UIWebView座標=從DOM座標(這裏我點擊不對應於ALER所示的localName T)。我已經設法弄清楚,有+/- UIWebView之間的1.4係數座標& JS的人(通過點擊屏幕下方,右手邊,這些值將window.innder{Width,Height}比較。

我的猜測是, UIWebView最初可能應用默認縮放比例,但我找不到什麼這個值對應。

此外,我還需要一種方法,使這項工作時,用戶實際上縮放/移動頁面。

有沒有人知道我在做什麼錯?

謝謝,

回答

3

好吧,我終於找到了什麼問題。

它是從變焦比來了,這是我如何設法解決它:

- (void) longPress: (UIGestureRecognizer *) gesture { 
    int displayWidth = [[self.webView stringByEvaluatingJavaScriptFromString:@"window.innerWidth"] intValue]; 
    CGFloat scale = self.webView.frame.size.width/displayWidth; 

    CGPoint curCoords = [gesture locationInView:self.webView]; 

    curCoords.x /= scale; 
    curCoords.y /= scale; 

    if (!CGPointEqualToPoint(curCoords, self.lastLongPress)) { 
     self.lastLongPress = curCoords; 

     [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"longPress(%f, %f)", curCoords.x, curCoords.y]]; 
    } 
} 

而JS處理程序:

function longPress(x, y) { 
    var e = svgDocument.elementFromPoint(x, y); 

    alert('Youhouu ' + e.localName); 
} 

看來,它不需要添加現在UIWebView pageOffset自動添加它(從iOS 5我相信)。

乾杯,

+0

搞清楚問題的好工作是變焦比感謝 – malhal