我有一个UIWebView来显示生成的HTML表格。当用户点击HTML表格中的单元格时,我的应用程序需要知道他们点击了哪个单元格,并且需要知道点击位置的(x,y)坐标,以便在该点显示一个气泡窗口。
我已经在UIWebView代理中实现了shouldStartLoadWithRequest函数。在我的网页中,我嵌入了捕获触摸事件的JavaScript代码,并通过URL请求传递了应该是被触摸点的(x,y)坐标,如下所示:
在我的html表格中,每个单元格都会得到一个onclick事件,调用cellTapped()函数:
我已经在UIWebView代理中实现了shouldStartLoadWithRequest函数。在我的网页中,我嵌入了捕获触摸事件的JavaScript代码,并通过URL请求传递了应该是被触摸点的(x,y)坐标,如下所示:
var x, y;
function init()
{
// Add an event listener for touch events - set x and y to the coordinate of the touch point
document.addEventListener('touchstart', function(event) {
x = event.touches[0].clientX;
y = event.touches[0].clientY;
}, false);
}
function cellTapped(event)
{
window.location.href="file://myapp/dostuff?x=" + x + "&y=" + y;
}
在我的html表格中,每个单元格都会得到一个onclick事件,调用cellTapped()函数:
<td onclick="cellTapped(event)">...</td>
每当用户在UIWebView中点击任何地方时,我都会得到触摸点的坐标,并将其保存在x和y中。如果他们在表格单元格中触摸,则我接收到触摸事件(设置x和y),然后调用cellTapped()并设置window.location.href,将(x,y)坐标传递给我的应用程序。
这一切都非常漂亮。除非用户已经缩放或滚动了UIWebView。当他们缩放或滚动时,我从event.touches[0].clientX和event.touches[0].clientY获取的x和y坐标会偏离一些变化的像素数(与缩放量和Web视图向上/向下或向左/向右滚动的距离有关)。
是否有一种确定Web视图的缩放比例和滚动位置的方法,以便我可以相应地调整我的x和y坐标?UIScrollView的zoomScale和contentOffset属性似乎在UIWebView中没有公开。