EditText有时只调用ACTION_DOWN和ACTION_CANCEL

时间:2011-11-17 20:00:25

标签: android events touch android-edittext

我有一个扩展EditText的类,当我点击我的控件时,有时我调度到控件的唯一事件是ACTION_DOWN和ACTION_CANCEL。这会导致软键盘无法启动。我期望的,并且在另一半时间发生,是为了触发ACTION_DOWN,ACTION_UP和ACTION_CANCEL事件。

我做过一些研究,并且从以前的SO帖子中做过,这两个与此类似的常见问题都不是真的:

  1. 我的onTouchEvent方法不返回false。它总是返回true(调用super.onTouchEvent(ev);)。
  2. 没有其他控件拦截我的触控事件。我在其他实现onInterceptTouchEvent()的类上放了断点,但没有一个命中。另外,我无法找到调试时onTouchEvent被破坏的任何其他类。
  3. 我已经在我的所有类中调用了dispatchTouchEvent,这些类位于调度堆栈中,用于调度ACTION_UP事件的工作情况。但是,在未调度ACTION_UP事件的情况下,调用堆栈中的所有点都不会被命中。这让我相信ACTION_UP事件从未排队过?我不知道这是怎么可能的。
  4. 我已经尝试调试源代码,我可以在EditText onTouchEvent内部进行分解。这就是我能够缩小我的问题是ACTION_UP事件没有触发的方法。我想做的还是打破ViewGroup的dispatchTouchEvent方法来进一步调试,但我无法在那里设置断点。

    我的问题是:

    1. 是否有人可能导致ACTION_DOWN的事件发送 - > ACTION_CANCEL中间没有ACTION_UP?除了在onTouchEvent句柄上返回false或拦截触摸事件之外。
    2. 有没有办法调试ViewGroup调度,所以我可能能够进一步分析导致UP事件不发送的状态。我真的希望Android框架确实在某个地方有UP事件,并且状态正在使它迷失。

0 个答案:

没有答案