我正在开发黑莓应用程序。当用户按下一个按钮并保持2秒钟时,我想在同一个屏幕上触发任何操作。
任何方式
由于
答案 0 :(得分:3)
这是你需要在非正式的伪节目中做的事情:
When (click detected)
Schedule Timer to execute in 2s.
When (unclick detected)
Cancel timer
计时器在用户首次点击时安排。如果用户按下按钮超过2秒,则计时器将运行。否则,当按钮在2秒之前释放时,计时器将被取消并且不会运行。请注意,如果用户仅在2s或更晚时间释放,也可以取消Timer。在这些情况下,它不是问题,因为如果它在运行时被取消,则允许它完成,如果它在完成后被取消,它什么都不做。
要检测点击/取消点击,您有多种选择。您可以从按钮类扩展并覆盖touchEvent
建议的Peter,也可以覆盖MainScreen
课程中的navigationClick
和navigationUnclick
。由于您需要在每个按钮中执行此操作,因此我宁愿将ButtonField子类化为启用自定义单击/取消单击侦听器,从而允许在其他屏幕中重用该类。
答案 1 :(得分:0)
我不知道为非触摸屏手机做这件事的方法。
通过覆盖Field的touchEvent(),可以在触摸屏手机上进行此操作。看看检测touchEvent.Click和TouchEvent.Unclick和/或TouchGesture.Hover - 实际上Hover是我认为你会遇到的。
假设它是悬停,那么您可以通过获取悬停计数来获得估计值,或者使用Click来获取开始时间并在您获得悬停时减去以查看实际上它是否已超过两秒。
但是我有两个问题:
a)这不像黑莓一样 - 黑莓用户不会经常按下并按住。那么这真的是一个很好的用户体验吗?
b)如果该字段已具有某些触摸功能,那么您可能会对该处理产生影响,因此您可能必须非常小心处理的内容(返回true)以及传递给super.touchEvent()的内容。
<强>更新强>
请注意另一个答案,建议对非触控手机使用navigationClick / Unclick。我没有想到这一点,并没有测试它,但它似乎是一个很好的选择。甚至可能在触摸屏手机上工作而不是使用touchEvent - 但要注意悬停被驱动。