У меня есть класс, который расширяет EditText, и когда я нажимаю на свой элемент управления, иногда единственными событиями, которые я отправляю в элемент управления, являются ACTION_DOWN и ACTION_CANCEL.Это приводит к тому, что программная клавиатура не подходит.То, что я ожидаю, и происходит в другую половину времени, для событий ACTION_DOWN, ACTION_UP и ACTION_CANCEL.
Я провел некоторое исследование и из предыдущих сообщений SO, и эти две общие проблемы, которыепохоже на это не так:
- Мой метод onTouchEvent не возвращает false.Он всегда возвращает true (вызов super.onTouchEvent (ev);).
- Нет другого элемента управления, который перехватывает мое событие касания.Я поставил точки останова на другие мои классы, которые реализуют onInterceptTouchEvent (), и ни один из них не ударил.Кроме того, я не могу найти какой-либо другой класс, где onTouchEvent не работает во время отладки.
- Я поместил переопределенное dispatchTouchEvent во все мои классы, которые находятся в стеке вызовов для рабочего случая, в котором отправляется событие ACTION_UP.Однако в случае, когда событие ACTION_UP не отправлено, ни одно из мест в стеке вызовов не попадет.Это приводит меня к мысли, что событие ACTION_UP никогда не ставилось в очередь?Я не знаю, как это может быть возможно.
Я попытался отладить исходный код, и я могу сломать внутри EditText onTouchEvent.Вот как я смог сузить, что моя проблема в том, что событие ACTION_UP не запускается.Я также хотел бы использовать метод dispatchTouchEvent в ViewGroup для дальнейшей отладки, но я не могу поставить точку останова.
Мои вопросы:
- Кто-нибудь, что может вызвать отправку события ACTION_DOWN -> ACTION_CANCEL без ACTION_UP в середине?Кроме возврата false на дескриптор onTouchEvent или перехвата сенсорных событий.
- Есть ли способ отладки диспетчеризации ViewGroup, чтобы я мог дополнительно определить, в каком состоянии событие UP не отправляется.Я очень надеюсь, что в фреймворке Android где-то есть событие UP, и состояние чего-то делает его потерянным.