View 在拦截了 action moves 事件后,拦截不到 action up 事件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Jimjay
V2EX    Android

View 在拦截了 action moves 事件后,拦截不到 action up 事件

  •  
  •   Jimjay 2018-02-12 20:01:12 +08:00 12787 次点击
    这是一个创建于 2800 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简单来说就是, 界面上一个正方形 view (图片, 注册长按监听后会唤起一个 popup window (覆盖了这个 view ),我想在让手指离开屏幕(即 action up)后,popup window 消失。 我让 view 注册touch 事件, 在捕捉到 action up 事件后,popupWindow.dismiss().

    问题是,popupwindow 出现后, 手指在屏幕上滑一下(即捕捉到 action moves 事件),然后就再也捕捉不到事件了(直接结果就是 popupwindow.dismiss() 不会被调用), 我尝试打印出 action down/move/up 结果,唤起 popup ( action down 可以捕捉),而后抬起手指 popupwindow 能消失( action up ),前提是中间没有 acion move, 如果唤起 popup 后,滑动屏幕( action down 可以捕捉,打印出来),而后无论再 move,或者手指抬起,什么事件都捕捉不到(即没有打印出结果, 不管是否在那个 view 里面滑动或者抬起)

    我尝试在 popup window 里拦截事件,但是结果还是一定要在 popup 唤起后,抬起手指,然后再点击,popup 才拦截到事件.

    10 条回复    2018-03-04 13:55:24 +08:00
    lmskater
        1
    lmskater  
       2018-02-12 20:23:33 +08:00 via iPhone
    return false
    Jimjay
        2
    Jimjay  
    OP
       2018-02-12 20:32:26 +08:00
    @lmskater 试过了, 而且返回 true 的话, 长按监听就收不到事件了
    Jimjay
        3
    Jimjay  
    OP
       2018-02-12 20:33:44 +08:00
    @lmskater 查了文档后,发现说只有任意一个动作返回 false 之后, 那这个 view 以后就再也不会捕捉其他事件了
    lmskater
        4
    lmskater  
       2018-02-13 15:05:34 +08:00 via iPhone
    popup 是否遮挡了 view
    popup 设置 untouchable

    目测你 popup 弹出后,滑动时事件被 popup 拦截,所以 view 接收不到事件
    Jimjay
        5
    Jimjay  
    OP
       2018-02-13 15:31:09 +08:00
    @lmskater 所以我在 popup 设置了 setOnTouchInterceptor 拦截 action_up 事件, 但是在 popup 弹出了后(手机未离开屏幕),popup 拦截不到事件( log 没在 console 显示),抬起手指( popup 仍在),再点击屏幕,popup 才拦截到 down,move,up 事件
    lmskater
        6
    lmskater  
       2018-02-13 15:54:45 +08:00 via iPhone
    @Jimjay (手指未离开屏幕)那这时你滑动能接收事件吗
    lmskater
        7
    lmskater  
       2018-02-13 17:39:31 +08:00 via iPhone
    @Jimjay 还有就是长按监听的返回值是否正确,如果设置多个 click,touch 什么的,要非常注意 return 值,一不小心就事件被拦截了。
    Jimjay
        8
    Jimjay  
    OP
       2018-02-13 19:46:26 +08:00
    @lmskater 这个需求暂时搁置了, 太难为了,弄了几天,主要是长按 view 呼出 popup 后手指未离开过屏幕后滑动,view 有打印出 down 事件,证明有捕捉到,但再滑动就什么都不打印了,简单点讲好像 view 只有两个动作,就是 down,然后 up 或者 move,之后就再也捕捉不到事件
    houskii
        9
    houskii  
       2018-02-14 00:47:15 +08:00
    action cancel 呢
    cylee
        10
    cylee  
       2018-03-04 13:55:24 +08:00
    考虑 pop 设置下 FLAG_NOT_TOUCH_MODAL
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     948 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 19:32 PVG 03:32 LAX 12:32 JFK 15:32
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86