黑莓触摸屏事件发生冲突

时间:2012-03-01 15:44:11

标签: blackberry event-handling touchscreen

我有

    if(eventCode == TouchEvent.DOWN)
    {
        //code
    }
    if(eventCode == TouchEvent.MOVE)
    {
        //code
    }
    if(eventCode == TouchEvent.UP)
    {
        //code
    }
    if(eventCode == TouchEvent.GESTURE)
    {
        if (gestureCode == TouchGesture.PINCH_END)
        {
           //code
        }
    }

问题是,捏合会触发DOWN -> GESTURE -> UP

向下移动的事件用于拖动地图。

Pinch用于放大/缩小的位置。

如何将它们分开?

1 个答案:

答案 0 :(得分:1)

使用PINCH_BEGIN。我设置了一个全局myMode变量,告诉它处于捏合模式。所以MOVEUP无法解雇。

然后捏起来,重置模式。

if(eventCode == TouchEvent.DOWN)
{
    mode = 1;
    //code
}
if(eventCode == TouchEvent.MOVE && mode == 1)
{
    //code
}
if(eventCode == TouchEvent.UP && mode == 1)
{
    mode = 0;
    //code
}
if(eventCode == TouchEvent.GESTURE)
{
    if (gestureCode == TouchGesture.PINCH_BEGIN)
   {
       mode = 2;
    }
    if (gestureCode == TouchGesture.PINCH_END)
    {
       mode = 0;
       //code

    }
}

这种MOVE运行方式:

DOWN -> MOVE -> UP

和捏运行:

DOWN -> DOWN -> PINCH_BEGIN -> PINCH_END

PINCH_BEGIN在尝试调用MOVE之前执行。因此被新模式覆盖)