Jump to content

Recommended Posts

  • Administrators
Posted

Скачать:
Релиз доступен только по запросу.

Дата релиза:

20 декабря 2021


Исправление ошибок 🐛

  • У компонентов TfgImage и TfgProgressBar не работали корректно события OnTap и OnLongTap (Android).
  • Thanks 1
Posted (edited)

Ярослав доброй ночи! Обновился, вопросы остались:
1. На некоторых картинках хиттест слетел (ну это ладно)
2. При тапе, идет задержка, как будто я ему лонг тап делаю и потом событие срабатывает.
3. Раньше при тапе звук был, сейчас молча.

Во вложении время срабатывание события между OnTouch & OnTap.
 

 

Project2.zip

Edited by knsg12
  • Administrators
Posted

Добрый вечер,

3 минуты назад, knsg12 сказал:

1. На некоторых картинках хиттест слетел (ну это ладно)

Как я уже говорил, я не смог воспроизвести проблему. Пробовал разные проекты, все на месте, там где хит тест не был указан, он и не загружается. Где был указан, все так же и загрузилось. Я специально грузил большие проекты, где много компонентов, чтобы поймать этот кейс. Но все штатно. Опять же, если бы вы мне дали проект или показали, где видно, что свойство слетает, то можно было бы предметно поговорить.

7 минут назад, knsg12 сказал:

2. При тапе, идет задержка, как будто я ему лонг тап делаю и потом событие срабатывает.

В 1.13.2.0 был изменен подход в обработки жеста OnTap, чтобы поправить проблему не консистентности срабатывания жестов OnTap и OnLongTap. Проблема в том, что в Андроиде есть жесты Tap, DoubleTap, LongTap и др, а есть понятие Click/LongClick.

Жест Tap можно представить в виде следующих шагов:

  1. Пользователь опустил палец на экран
  2. Через короткое время, пользователь поднял палец с экрана.
  3. Если через короткий промежуток времени пользователь не начал делать второе касание, это Tap, если начал, то это возможно Double Tap.

Click же состоит из:

  1. Пользователь опустил палец на экран
  2. Пользователь может перемещать палец по экрану (Время не ограничено).
  3. Если пользователь поднял палец в рамках действия компонента, на который он опустил палец, то срабатывает Click.

То есть основные отличия - это:

  1. Время жеста
  2. Возможность перемещения пальца между опусканием и поднятием пальца

Все усугубляется тем, что Click никак не коррелирует с жестами Tap, DoubleTap, LongTap. Это значит, что если срабатывает Click, то спокойно может сработать любой жест Tap. В 1.13.2.0 для кастомных компонентов (TfgImage, TfgLayout и тд. То есть те, что не имеют логики обработки касаний по умолчанию) я сделал полноценные жесты, избавившись от Click. И теперь у них полноценно работают жесты.

Однако, с учетом того, что штатные компоненты типа кнопки, чек боксов, полей ввода и тд, построены именно на использовании Click полноценно сделать поддержку и жестов и Click не получится в виду ограничений самой реализации системы обработки жестов, касаний в Андроиде.  Поэтому для таких компонентов используется эмуляция жеста OnTap на базе Click.  

Именно с учетом отличий, я вас и спрашивал на каких компонентах для вас это важно. Поскольку первоначально речь шла об TfgImage, то для него, я как раз включил новую реализацию жестов (без эмуляции на базе Click). Кнопка является отдельным компонентом, где отказывать от клика нельзя иначе будет нарушена привычная логика обработки нажатия, поэтому на ней и идет микс жестов, которые могут конфликтовать.

Есть только один вариант относительно нормального решения - это ввод нового события OnClick дополнительно к OnTap. Именно новое событие OnClick будет работать, как раньше работал OnTap, а событие OnTap будет полноценным тап жестов, как это принято на всех платформах в принципе. Жест Tap станет опциональным и добавится к множеству GestureKinds. В этом случае все будет более менее предсказуемым с точки зрения работы жестов. Но, как вы понимаете, это ломает совместимость. Потому что OnTap - это базовый жест, который использует каждый. Поэтому введение OnClick потребует от всех клиентов перелопатить все проекты и перекинуть обработчики на OnClick

26 минут назад, knsg12 сказал:

. Раньше при тапе звук был, сейчас молча.

Это был звук, который работал на Click.

6 минут назад, knsg12 сказал:

Во вложении время срабатывание события между OnTouch & OnTap.

В демке пустая форма. Ничего больше нет на форме.

Posted
1 час назад, Yaroslav Brovin сказал:

Как я уже говорил, я не смог воспроизвести проблему. Пробовал разные проекты, все на месте, там где хит тест не был указан, он и не загружается. Где был указан, все так же и загрузилось. Я специально грузил большие проекты, где много компонентов, чтобы поймать этот кейс. Но все штатно. Опять же, если бы вы мне дали проект или показали, где видно, что свойство слетает, то можно было бы предметно поговорить.

К сожалению тоже не увидел точной закономерности, как раньше писал, не на всех картинках подобное наблюдал, возможно что то с моей стороны не правильно делалось.
 

1 час назад, Yaroslav Brovin сказал:

В демке пустая форма. Ничего больше нет на форме.

Прошу прощения, перед отправкой не сохранил проект. Демо пример сохранил и обновил. Можно скачать, там все есть.

Ну и в общем спасибо за такой развернутый ответ. Думаю ломать структуру не совсем хороший вариант, всегда можно подстроиться. 

×
×
  • Create New...