Карта не запускает события нажатия / освобождения указателя

#codenameone

#codenameone

Вопрос:

У меня есть экземпляр MapContainer, который не отвечает на подключенные прослушиватели PointerRelease. Я пытаюсь определить, когда карта перестала двигаться после ее перетаскивания пользователем. В приведенном ниже коде первые два прослушивателя не выдают никаких выходных данных. Третий / четвертый делают.

 MapContainer mc = new MapContainer("mykey");
mc.addPointerPressedListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent evt) {
                System.out.println("Don't see this");
            }
        });


        mc.addPointerReleasedListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent evt) {
                System.out.println("Don't see this either");
            }
        });
        mc.addTapListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent evt) {
                System.out.println("See This :-)");
            }
        });
        mc.addMapListener(new MapListener() {
            @Override
            public void mapPositionUpdated(Component source, int zoom, Coord centerCoord) {
                System.out.println("See this too!");
            }
        });
  

Ответ №1:

addTapListener является правильным и реализованным в MapContainer . События указателя низкого уровня не будут работать должным образом для этого контейнера, потому что логика отображения реализована изначально, и, следовательно, эти события используются.

Возможно, вы сможете отслеживать их, привязав прослушиватель к родительской форме, но это проблематично, поскольку события / жесты могут иметь интерпретации, зависящие от платформы.