Appcelerator Titanium点击事件在(某些)Android上超出范围

时间:2014-10-22 12:53:51

标签: android click titanium appcelerator

我有一个简单的视图,捕获点击并在复杂的图像上评估它们。在某些手机(三星S3 Mini与Android 4.1.2)上,代码运行良好,在其他手机上(HTC One X与Android 4.1.1),它没有。问题似乎是点击坐标超出范围。

在我看来,我有一个对象:viewCanvas,宽度为1250,高度为290.但是当我点击右下角(例如)时,我的event.x = 1762.20214和event.y = 531.23968 < / p>

为什么?事件中是否x * y不受视图对象尺寸的约束?我检查了event.source.id,它是正确的对象:viewObject,event.source.rect显示正确的宽度和高度。我很难过,有没有人见过这个?

由于

2 个答案:

答案 0 :(得分:0)

在Titanium中,触摸坐标应始终是触摸视图的坐标。这也体现在documentationx and y which describe the x/y coordinates of the event in the view's coordinates)中。但特别是在Android上,这不符合建议。特别是webViews和imageViews很可能在没有正确处理它们的情况下吞下触摸事件(并不总是触发侦听器)。我在使用Titanium时认识到的另一件事是你所描述的行为:有些坐标似乎超出界限。不幸的是,我无法正确地(即不断地)重现这一点,也无法找出造成这种行为的原因。

您的案例支持Titanium混合触摸事件的理论。即使触摸事件以某种方式冒泡到父视图,在1280x720显示器上似乎也不可能发生event.x = 1762.

最后,我希望这个解释对你有用,虽然我无法解决你的问题。

答案 1 :(得分:0)

问题被揭示为屏幕尺寸的错误表示,一个在DP(密度无关像素)中,另一个在像素中。该视图以android像素报告,但事件是在DP中报告,因为我们在tiapp.xml中选择了该事件作为我们的默认单位。请在此处查看详细信息:

http://developer.appcelerator.com/question/178626/click-event-coordinates-out-of-range-on-some-android-platforms

由于