zhoushp_cn
zhoushp_cn
  • 发布:2015-04-02 10:02
  • 更新:2015-07-14 11:52
  • 阅读:3801

swipe手势的问题

分类:HTML5+

关于swipe, ios手势向右或向左,必须是从边界开始滑动才触发事件,为什么现在任何地方滑动都会触发,有其它办法可以解决吗?

我现在app的场景是这样,
有个相册,向右滑,退出相册,
点击相册里的照片,可以预览,预览模式下可以左右滑动来切换照片,
问题就来了,我在照片上滑动得快点,就触发swipe事件,直接退出,体验非常不好

2015-04-02 10:02 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

你自己监听的swipe事件来退出相册?

如果是的话。可以在swipe事件里。取得event.detail.start.x,判断手势开始时的位置。再确定是否需要退出相册。

  • h小明

    请问IOS里面没有start.x 用什么判断?

    2015-08-31 11:21

  • DCloud_UNI_FXY

    回复 h小明:console.log(mui.gestures.session.firstTouch.center);

    2015-08-31 14:21

  • h小明

    回复 DCloud_UNI_FXY:可以 。非常谢谢。 就是这方面文档好少,我们很难找的到。要是有专门的API就好了,不过还是感谢!这么快的速度解决我提出的问题。。

    2015-08-31 14:40

zhoushp_cn

zhoushp_cn (作者)

哦,明白,非常感谢

我现在是没有自己添加事件,用的是默认swipeBack返回的

zhoushp_cn

zhoushp_cn (作者)

再问一下,如果我想改全局swipe处理,都想判断开始的位置,有办法可以简单处理吗?

还是说得一个个swipe事件里各自处理?

DCloud_UNI_FXY

DCloud_UNI_FXY

ios目前是支持从边缘拖拽关闭或隐藏当前webview。

在该webview的style可以配置popGesture属性,支持close|hide|none

参考:http://ask.dcloud.net.cn/article/102

你可以不用js实现的swipeBack

朋也

朋也 - https://tomoya92.github.io

@DCloud_MUI_FXY

请问swipe手势里的swipeMaxTime,该怎么在页面里自己定义呢?

mui.js里的初始写法是这样的:

(function ($, name) {  
    var handle = function (event, touch) {  
        if (event.type === $.EVENT_END || event.type === $.EVENT_CANCEL) {  
            var options = this.options;  
            if (touch.direction && options.swipeMaxTime > touch.touchTime && touch.distance > options.swipeMinDistince) {  
                touch.swipe = true;  
                $.trigger(event.target, name + touch.direction, touch);  
            }  
        }  
    };  
    /**  
     * mui gesture swipe  
     */  
    $.registerGesture({  
        name: name,  
        index: 10,  
        handle: handle,  
        options: {  
            swipeMaxTime: 300,  
            swipeMinDistince: 18  
        }  
    });  
})(mui, 'swipe');

我想在页面里滑动慢点就触发这个方法,就要把swipeMaxTime这个值设置大点,可总不能再mui.js里设置吧, 请问该怎么在页面里设置?

  • DCloud_UNI_FXY

    目前暂未对外公开这些配置,你可以在swipe事件里边,自己再判断一下时间

    2015-07-16 18:13

该问题目前已经被锁定, 无法添加新回复