单击与双击困境
我发生了一次单击事件,我发生了不同的事件双击。
单击:加载电子邮件消息的预览
双击:在不同窗口中加载消息视图
问题是,为了实现双击,只需单击一次......两次。 目前的解决方案是单击一次超时,如果检测到双击则取消它。
问题1:双击事件发生的超时是多少?例如,如果我单击一下非常慢,就不会发生这种情况。
问题2:有没有比使用超时更好的解决方法?
答案 0 :(得分:3)
您一定要重新考虑您的用户界面。查看您周围的应用程序,尤其是在Windows中:当支持双击时,始终会触发单击操作并且不引人注目。例如,双击图标时,第一次单击将选择它,第二次单击将触发该操作。至少有两个原因:
双击是一种复杂的动作。用户有时会失败,而是触发单击操作。因此,你不想做任何可能惹恼他的事情。
如果您不想在每次用户双击时触发单击操作,则除了设置超时之外别无他法。这意味着每个尝试使用单击的用户都必须承担超时,降低应用程序响应速度并阻碍用户体验。
我还可以添加一个特定于WP7开发的原因:由于双击未在大多数其他移动应用中使用,因此手势无法被发现,并且大多数用户都不会意识到他们可以使用它
底线:考虑使用其他手势(如扫描或点击并保持),或更改您的UI以使其不必要。
答案 1 :(得分:1)
我在朋友的帮助下找到了答案。
private void Button_Tap(object sender, GestureEventArgs e)
{
//add the event handler for single tap event
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
//start timer. If the tick happends a single tap happend. If it is a double tap the tick event will be removed.
dispatcherTimer.Start();
}
//No double tap happend. So execute the tap function.
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
//Stop timer
dispatcherTimer.Tick -= new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Stop();
//Rest of the tap function
Taps.Add("Tap");
}
private void Button_DoubleTap(object sender, GestureEventArgs e)
{
//Stop timer
dispatcherTimer.Tick -= new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Stop();
//Rest of the double tap function
Taps.Add("Double tap");
}
答案 2 :(得分:0)
为什么不用别的东西。 点击以在新窗口中打开 坚持预览?
答案 3 :(得分:0)
在wp7上,doubleTap可能从未使用过。保持将是正确的方式