- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试在 Blackberry 9550 模拟器上实现简单的触摸事件处理,但它不起作用。实际上,touchEvent 永远不会被调用,因为控制台中不会出现任何文本。此外,我在触摸屏幕时出现烦人的“完整菜单”。代码如下:
package mypackage;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.system.EventInjector.TouchEvent;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.VirtualKeyboard;
import net.rim.device.api.ui.container.MainScreen;
public class MyScreen extends MainScreen
{
public MyScreen()
{
super(NO_SYSTEM_MENU_ITEMS);
getScreen().getVirtualKeyboard().setVisibility(VirtualKeyboard.HIDE_FORCE);
add(new HandleTouch());
}
class HandleTouch extends Field {
protected void layout(int width, int height) {
setExtent(width, height);
}
public void paint(Graphics graphics) {
graphics.drawBitmap(0, 0, this.getWidth(), this.getHeight(), Bitmap.getBitmapResource("bg.png"), 0, 0);
}
public boolean isFocusable() { return true;}
protected boolean touchEvent(TouchEvent message) {
switch( message.getEvent() ) {
case TouchEvent.CLICK:
System.out.println("----------------------------->CLICK");
return true;
case TouchEvent.DOWN:
System.out.println("----------------------------->DOWN");
return true;
case TouchEvent.MOVE:
System.out.println("----------------------------->MOVE");
return true;
}
System.out.println("PRINT ME SOMETHING IN ANY CASE");
return false;
}
public HandleTouch() {
}
}
}
最佳答案
1)。首先,用这段代码
protected void layout(int width, int height) {
setExtent(width, height);
}
您实际上是在设置一个非常大的字段。这是因为 BB UI 框架将最大可用/可能的维度传递给 layout(int width, int height)
,因此该字段应使用传递值中的某些部分。在这种特定情况下,宽度将是显示器的宽度(360 像素),高度是 VerticalFieldManager
的最大可能高度(您要添加屏幕字段的那个,它隐含在屏幕的内部结构)(1073741823 px)。所以,最后这可能会导致一个非常大的 Bitmap
对象,该对象需要该字段才能被绘制,并且您可能会得到一个 Uncaught Error “位图太大”(我在 Storm 9530 上做过) .
所以,layout()
应该使用一些相对较小的值,例如:
protected void layout(int width, int height) {
setExtent(Math.min(width, 360), Math.min(height, 480));
}
2).
Actually, touchEvent never gets called
嗯,实际上它确实被调用了。要看到你应该简单地触摸(而不是点击)。鼠标左键模拟点击(一系列 TouchEvent.DOWN
> TouchEvent.CLICK
> TouchEvent.UNCLICK
> TouchEvent.UP
),右键模拟触摸(一系列TouchEvent.DOWN
> TouchEvent.UP
)。
3).
Also, I get an annoying "Full Menu" which appears on touching the screen.
这是因为您的字段不消耗 TouchEvent.UNCLICK
事件。例如,使用此代码,您的字段将不会显示弹出窗口:
protected boolean touchEvent(TouchEvent message) {
return true;
}
但是,这对于弹出窗口来说是一个糟糕的解决方案。最好了解真正导致弹出窗口的原因。如果 TouchEvent.UNCLICK
事件未被消耗,则 BB UI 框架调用 getContextMenu(int instance)
和 makeContextMenu(ContextMenu contextMenu, int instance)
方法场。因此,为了禁用弹出窗口(实际上是 getContextMenu(int instance)
创建的 ContextMenu
您应该覆盖 getContextMenu(int instance)
像这样:
public ContextMenu getContextMenu(int instance) {
// just in case check if a context menu is requested
// in order not to disable other types of menu
boolean isContextMenu = (Menu.INSTANCE_CONTEXT == instance);
return isContextMenu ? null : super.getContextMenu(instance);
}
4)。最后,我建议不要更改 touchEvent(TouchEvent message)
方法的 native /默认行为。您可以只观看/记录它,但不要更改(始终称其为 super 版本)。这是因为触摸事件处理比最初看起来要复杂得多。在这里很容易得到一个棘手的错误。我相信大多数程序员不应该改变 touchEvent(TouchEvent message)
的原生行为,除非他们真的想创建一些自定义 UI 组件来处理触摸手势。通常他们只想对点击使用react(表现为 ButtonField
),但是为此您可以简单地覆盖 navigationClick(int status, int time)
或 navigationUnclick(int status, int time)
.当用户在触摸屏上单击您的字段时,BB UI 框架将调用这些方法。
关于events - 黑莓中的触摸事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6083469/
我正在尝试将 WPF CodeBehid 事件(如 Event、Handler、EventSetter)转换为 MVVM 模式。我不允许使用 System.Windows.Controls,因为我使用
我可能误解了 Backbone 中的事件系统,但是当我尝试以下代码时什么也没有发生。当我向 Backbone.Events 扩展对象添加新属性时,它不应该触发某种更改、更新或重置事件吗?就像模型一样吗
我遇到了一个简单的问题,就是无法弄清楚为什么它不起作用。我有一个子组件“app-buttons”,其中我有一个输入字段,我想听,所以我可以根据输入值过滤列表。 如果我将输入放在我有列表的根组件中,一切
System.Timers.Timer 的 Elapsed 事件实际上与 System.Windows.Forms.Timer 的 Tick 事件相同吗? 在特定情况下使用其中一种比使用另一种有优势吗
嗨,这个 javascript 代码段是什么意思。(evt) 部分是如此令人困惑.. evt 不是 bool 值。这个怎么运作? function checkIt(evt) { evt
我正在使用jquery full calendar我试图在事件被删除时保存它。 $('calendar').fullCalendar ({
我有两个链接的鼠标事件: $('body > form').on("mousedown", function(e){ //Do stuff }).on("mouseup", function(
这是我的代码: $( '#Example' ).on( "keypress", function( keyEvent ) { if ( keyEvent.which != 44 ) {
我尝试了 dragOver 事件处理程序,但它没有正常工作。 我正在研究钢琴,我希望能够弹奏音符,即使那个键上没有发生鼠标按下。 是否有事件处理程序? 下面是我正在制作的钢琴的图片。 最佳答案 您应该
当悬停在相邻文本上时,我需要使隐藏按钮可见。这是通过 onMouseEnter 和 onMouseLeave 事件完成的。但是当点击另外的文本时,我需要使按钮完全可见并停止 onMouseLeave
我有ul标签内 div标签。我申请了mouseup事件 div标记和 click事件 ul标签。 问题 每当我点击 ul标签,然后都是 mouseup和 click事件被触发。 我想要的是当我点击 u
我是 Javascript 和 jQuery 的新手,所以我有一个非常愚蠢的疑问,请耐心等待 $(document).click(function () { alert("!"); v
我有一个邮政编码解析器,我正在使用 keyup 事件处理程序来跟踪输入长度何时达到 5,然后查询服务器以解析邮政编码。但是我想防止脚本被不必要地调用,所以我想知道是否有一种方法可以跟踪 keydown
使用事件 API,我有以下代码来发布带有事件照片的事件 $facebook = new Facebook(array( "appId" => "XXX", "se
首次加载 Microsoft Word 时,既不会触发 NewDocument 事件也不会触发 DocumentOpen 事件。当 Word 实例已打开并打开新文档或现有文档时,这些事件会正常触发。
我发现了很多相关问题(这里和其他地方),但还没有具体找到这个问题。 我正在尝试监听箭头键 (37-40) 的按键事件,但是当以特定顺序使用箭头键时,后续箭头不会生成“按键”事件。 例子: http:/
给定的 HTML: 和 JavaScript 的: var $test = $('#test'); $test.on('keydown', function(event) { if (eve
我是 Node.js 的新手,希望使用流运行程序。对于其他程序,我必须同时启动一个服务器(mongodb、redis 等),但我不知道我是否应该用这个运行一个服务器。请让我知道我哪里出了问题以及如何纠
我正在尝试使用 Swift 和 Cocoa 创建一个适用于 OS X 的应用程序。我希望应用程序能够响应关键事件,而不将焦点放在文本字段上/文本字段中。我在 Xcode 中创建了一个带有 Storyb
我有以下代码: (function(w,d,s,l,i){ w[l]=w[l]||[];w[l].push({
我是一名优秀的程序员,十分优秀!