黑莓风暴触摸事件

时间:2009-05-12 12:10:55

标签: blackberry touchscreen rim-4.7

我已经将一个Blackberry 4.6.0应用程序移植到了4.7.0的风暴上。 除了我试图控制的触摸事件之外,一切都很好。 我在下面的方法中捕获触摸事件,这样做的确如此,但问题是 在我的touchEvent中的逻辑执行并返回菜单(通过菜单按钮激活后)总是显示。 我试过返回false,true和super.touchEvent(消息),但它仍然出现。

有关如何阻止菜单在捕获触摸事件后出现的任何想法?

protected boolean touchEvent(TouchEvent message)
{
     if (message.getEvent() == TouchEvent.CLICK)
     {
        //My code here
     }
}

非常感谢您的想法

2 个答案:

答案 0 :(得分:6)

只是为了澄清哈格姆的回答:

将TouchEvent.CLICK发送到您的应用程序后,还会发送navigationClick事件。这是出于兼容性原因,因此即使没有明确编写应用程序以响应touchEvents,ButtonFields之类的东西也可以在触摸屏设备上运行。

如果应用中的某个字段未使用navigationClick事件(返回true),则会显示上下文菜单。

如果您在单击按钮字段时看到此行为,则说明默认情况下,ButtonFields不会消耗点击事件。我发现总是使用以下样式位设置ButtonFields是一个好习惯:

ButtonField myButtonField = 
    new ButtonField( ButtonField.CONSUME_CLICK | ButtonField.NEVER_DIRTY );

haagmm的代码是一种解决方案,但更好的想法是复制TouchEvent.CLICK处理代码并将其粘贴到navigationClick方法中。这样,像BlackBerry Tour这样的轨迹球设备仍然可以使用你的应用程序。

答案 1 :(得分:3)

如果您“点击”屏幕或在SIM卡中单击鼠标左键,您将触发上下文菜单,类似于您在4.6设备上单击轨迹球。

您需要在您重载touchEvent的字段中执行与此类似的操作:

 protected boolean navigationClick(int status, int time) { return true; }