ios,webkit-overflow-scrolling:滚动列表上的触摸识别被破坏

时间:2014-02-11 16:53:03

标签: ios css webkit scroll

如在列表中使用webkit-overflow-scrolling: touch时所讨论的那样here in the apple forum,触摸识别就会被破坏。

  1. 发起滚动
  2. 在列表仍在滚动时触摸列表元素
  3. 被触摸的元素不是唯一实际被击中的元素,而是在步骤1中触及的元素以启动滚动。我尝试使用iScroll复制本机滚动但失败了。滚动非常缓慢且无法使用。尽管等待名单停止,有没有办法解决问题? :( Thx提前

    修改

    现在解决方法:

    检查滚动:

    $('.myList').on('touchmove', function(event {
      App.set('scroll', true);
    });
    

    滚动后拒绝第一次触摸:

    click : function(event) {
    
      if (App.get('scroll')) {
        App.set('scroll', false);
        return false;
      } else {
        this.performClick();
        return true;
      }
    }
    

    现在所有ios用户都必须触摸两次......有没有办法捕捉第一次触摸的坐标并在同一坐标处模拟第二次触摸?

2 个答案:

答案 0 :(得分:0)

我从你的描述中理解的是你有一个锯齿状的滚动效果。我想你可能有悬停事件聚焦而不是触摸和滚动事件。

如果您有:为列表项(或其任何父元素或子元素)设置悬停,则会影响您的触摸。触摸设备将首先模拟悬停效果,然后模拟您的点击/滚动事件。这导致锯齿状的卷轴。全部清除:悬停状态并再次检查是否遇到同样的问题。

我写了一篇关于响应式设计的详细文章和演示文稿。你可以找到它here。请查看第8,9和12节。

答案 1 :(得分:0)

在我的情况下,简单地将列表包含在-webkit-overflow-scrolling: touch;的额外div中有助于克服这个问题。