1

我使用mgwt并尝试为 TouchPanel 实现 MouseOverEvent 和 MouseOutEvent,如下例所示。事实证明,这些事件不适用于 iPhone 等移动设备。

在桌面上:当您按下或按下鼠标按钮时,这两个事件都会起作用。

在手机上:不工作!当我执行点击时,MouseOverEvent 被触发。

这些事件(如 TouchOverEvent 或 TouchOutEvent)是否有等效的 Touch 实现?

public class MyTouchPanel extends TouchPanel 
        implements HasMouseOverHandlers, HasMouseOutHandlers {
    
    @Override
    public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) {
        return addDomHandler(handler, MouseOverEvent.getType());
    }
    
    @Override
    public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) {
        return addDomHandler(handler, MouseOutEvent.getType());
    }
    
}

编辑:我知道有 TouchStartEvent 和 TouchEndEvent 但如果触摸开始于与您希望触发 TouchStartEvent 不同的元素上,它们不会触发。以下图为例。如果您将手指(在移动设备上)放在绿色区域并在蓝色区域上滑动而不松开手指,则不会在蓝色区域上触发 TouchStartEvent。另一方面,当您在那里松开手指时,会在蓝色区域触发 TouchEndEvent。

如果您在绿色区域开始触摸并滑动到蓝色区域,是否有任何更改可以在蓝色区域触发 TouchStartEvent?

在此处输入图像描述

编辑:我在这里用 mgwt 做了一个示例项目:https ://github.com/confile/popup-test

4

1 回答 1

2

我会这样解决它:

  • 在父面板上注册触摸移动、触摸开始、触摸结束处理程序(绿色)
  • 使用此处理程序来跟踪手指在画布上的移动
  • 根据蓝色面板的坐标确定手指是否在里面,如果没有在蓝色面板中启动,我认为您无法在此处跟踪任何事件
  • 绿色面板的触摸结束事件应确定触摸是否在蓝色面板中结束

就是这样。它应该适用于所有浏览器。

于 2013-12-18T01:05:54.830 回答