【问题标题】:kendo mobile listview - prevent touch highlight when scrollingkendo mobile listview - 滚动时防止触摸突出显示
【发布时间】:2014-10-15 21:31:23
【问题描述】:
当涉及剑道移动时,我认为类似的帖子(例如这个:prevent touchstart when swiping)没有充分涵盖这一点。
我的问题是,当我触摸(有限长度)kendo mobile listivew 开始滑动或滚动手势时,我碰巧触摸的行立即呈现为“::active”状态,这在我的 CSS 中会改变背景行的颜色。列表视图中的每一行都是一个锚点,因此也需要支持触摸/点击交互。这很烦人,因为它使用户认为他们已经选择了列表视图项,而实际上他们没有。
Kendo mobile 决定什么是触摸/点击,以及什么是滑动。我不。如果检测到滑动,我希望有某种方法可以防止触摸突出显示。我也愿意更改触摸的视觉表示方式,只要它仍然涉及更改背景颜色。也许是一个 CSS 颜色转换,前面有一个短暂的延迟?有什么想法吗?
【问题讨论】:
标签:
listview
touch
swipe
kendo-mobile
【解决方案1】:
几乎所有涉及活动状态和手势的东西在移动网络浏览器中都是一团糟。这些事件由浏览器触发,由 Cordova 稍微改进,然后由 Kendo 再次改进。
最大的问题是,当您的手指触摸屏幕时,它不可能知道您马上会开始滑动。实际上,您可以在开始手势之前将手指放在屏幕上并保持 10 秒钟。通常,一旦你开始一个手势,它就会取消点击/点击事件的发生并改为滑动,这应该会清除活动状态。
我发现几乎每个原生应用都有相同的行为。按住一个按钮,它将变为“活动”,但如果您将手指从其上滑开,它将再次变为非活动状态。
当您开始滑动时,您的行应该会移除“活动”状态。
根据经验,老实说,除非您想花一周时间与边缘案例和丑陋的事件处理代码作斗争,否则不要与现有行为作斗争。
更简单的方法是使用 CSS 去除背景颜色的变化。对于 iOS7,CSS 将是:
.km-ios7 li.km-state-active .km-listview-link {
#background-color: transparent;
}
但是在点击事件时,您的用户不会有任何视觉反馈表明他们按下了该项目,这在 IMO 中是一种更糟糕的用户体验。