Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]:拖拽过程中触发了子 View 的长按事件 #71

Open
pansong291 opened this issue Sep 22, 2024 · 7 comments
Open

[Bug]:拖拽过程中触发了子 View 的长按事件 #71

pansong291 opened this issue Sep 22, 2024 · 7 comments
Labels
bug Something isn't working

Comments

@pansong291
Copy link

pansong291 commented Sep 22, 2024

框架版本【必填】

10.62

问题描述【必填】

子 View 注册了一个长按事件,并且启用了悬浮窗的可拖拽,如果恰好按在注册了长按事件的子 View 上进行拖拽,就会在拖拽的过程中触发长按事件。

复现步骤【必填】

setDraggable(SpringBackDraggable())
setOnLongClickListener(
    R.id.btn,
    EasyWindow.OnLongClickListener { easyWindow, view: Button ->
        Log.i(TAG, "长按事件")
        true
    })

是否必现【必填】

项目 targetSdkVersion【必填】

34

出现问题的手机信息【必填】

Xiaomi 13

出现问题的安卓版本【必填】

14

问题信息的来源渠道【必填】

自己遇到的

是部分机型还是所有机型都会出现【必答】

不清楚,我只有一个手机,没有模拟器。

框架最新的版本是否存在这个问题【必答】

框架文档是否提及了该问题【必答】

是否已经查阅框架文档但还未能解决的【必答】

issue 列表中是否有人曾提过类似的问题【必答】

有个点击的,不过测试点击是没问题的,长按就会出现此问题。

是否已经搜索过了 issue 列表但还未能解决的【必答】

是否可以通过 Demo 来复现该问题【必答】

提供报错堆栈

No response

提供截图或视频

No response

提供解决方案

No response

@pansong291 pansong291 added the bug Something isn't working label Sep 22, 2024
@pansong291
Copy link
Author

Screenrecorder-2024-09-22-14-58-09-317_0_COMPRESSED.mp4

@getActivity
Copy link
Owner

你可以在 onLongClick 中通过调用 Draggable 类中的 isTouchMoving 方法来判断当前是否移动状态,如果是则不往下执行。

@pansong291
Copy link
Author

pansong291 commented Sep 25, 2024

你可以在 onLongClick 中通过调用 Draggable 类中的 isTouchMoving 方法来判断当前是否移动状态,如果是则不往下执行。

这样也会有概率触发长按事件,只要触发长按的瞬间松手就会。有个动画结束的回调,我也试过了,跟视频里一样。

Screenrecorder-2024-09-25-08-56-10-167.mp4

@getActivity
Copy link
Owner

你说的这种场景很难触发吧?我按照你的要求进行测试,试了十几次才试出来一次,这种需要卡特定节点才能复现,即松手的时间刚好是长按设定的秒数。

@getActivity
Copy link
Owner

目前针对这个问题,没有发现好的解决方案,如果你有的话,欢迎你提供给我。

@pansong291
Copy link
Author

pansong291 commented Sep 25, 2024

你说的这种场景很难触发吧?我按照你的要求进行测试,试了十几次才试出来一次,这种需要卡特定节点才能复现,即松手的时间刚好是长按设定的秒数。

主要是我想长按的时候弹个对话框,但是如果随手一拖再松开时恰好弹出对话框,有点影响体验,用户也会迷惑。

还有就是我试了 SpringBack 动画的结束回调,但是也是松开一瞬间就触发长按了,动画结束的回调是松开时就被调用了的吗?

@pansong291
Copy link
Author

pansong291 commented Sep 25, 2024

目前针对这个问题,没有发现好的解决方案,如果你有的话,欢迎你提供给我。

用户开始拖动时,移除长按事件,拖动结束再设回长按事件。不知道可不可行

试过了,不行 😑😑

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants