Подтвердить что ты не робот

Ionic2 tap vs click

Я начинаю с angular2 и ionic2;

В ionic2 у меня есть кнопка, которая вызовет метод моего компонента. Вот так:

<button secondary clear large>
</button>

Должен ли я использовать (click) - angular2 ИЛИ (tap) - ionic2?

Вот так:

(click)

<button secondary clear large (click)="pause()">
</button>

(tap)

<button secondary clear large (tap)="pause()">
</button>

Есть ли разница? Вы можете увидеть (tap) в http://ionicframework.com/docs/v2/components/#gestures

спасибо.

4b9b3361

Ответ 1

Если вы создаете мобильные приложения, (tap) может быть лучше. Это связано с тем, что при использовании (click) действие всегда выполняется даже при случайном нажатии. (tap) не будет выполняться, если пользователь удерживает его в течение более длительного периода времени. И если вы хотите, чтобы кнопка была нажата в течение более длительного периода времени, вы можете использовать (press).

Обратите внимание, что в некоторых ионных версиях событие (click) не будет выполняться в iOS. Поэтому использование (tap) было бы рекомендуемым решением.

Ответ 2

Я думаю, что это действительно зависит от того, как "родной" вам нужен пользовательский интерфейс.

Событие (tap) происходит из Hammer.js library. Если вы посмотрите на ссылку, вы увидите требования, которые должны быть выполнены для того, чтобы произошло событие крана.

Первым требованием, о котором следует знать, является опция time со значением по умолчанию 250 мс. Это означает, что если пресса превышает 250 мс, событие не будет срабатывать.

Второе требование, о котором нужно знать, это параметр threshold со значением по умолчанию 2 (не уверен, что это за единица, возможно, пиксели). Это означает, что если пресса имеет движение больше 2, событие не срабатывает. Например. перемещая палец в направлении слева направо над экраном, а затем нажимая элемент во время этого движения, событие может не срабатывать в зависимости от скорости движения.

Однако

Событие (click) по-прежнему будет срабатывать в обоих случаях, о которых я только что указал, при условии, что при нажатии пресса он все еще находится внутри целевого элемента.


В начале причина, по которой я сказал, "это действительно зависит", основывается на том, как другие приложения обрабатывают эти сценарии (каждое приложение может потенциально отличаться и может также отличаться в зависимости от результата использования).

Насколько я знаю кнопки в приложениях Android, которые я проверил (те, которые имеют визуальный результат, например, навигацию или всплывающие сообщения) работают так же, как событие (click), предоставленное Angular.

Я не могу прокомментировать, как работают приложения IOS, используя те же принципы, что и я не тестировал.

Я не подразумеваю, что в каждом случае использования (click) следует использовать вместо (tap), но попробуйте принять во внимание, как ведут себя другие родные приложения, и выберите из них наиболее подходящий.

Ответ 3

Я хотел бы добавить, что вы можете использовать (tap) событие для таких элементов, как button, a, но для элементов без кнопки атрибут tappable полезен:

Если вы хотите, чтобы мгновенные клики на элементах, отличных от кнопки, вам нужно добавить директиву tappable к этому элементу, иначе это будет иметь задержку в 300 мс. Например:

<div tappable (click)="someHandler()">Click me</div>

Ответ 4

У меня были проблемы с (click) в iOS, но в Android он работал нормально. В iOS, когда я изменил язык приложения и сразу после этой ссылки, он ничего не делал. Я думаю, что это связано с блокировщиком блокировки Ionic https://github.com/driftyco/ionic/issues/6996.

Но после того, как я изменил (click) на (tap) после того, как ссылка на изменение языка работает мгновенно. У меня также были проблемы, когда выбор языка не делал ничего (даже после некоторого времени ожидания) и менял его также с (click) на (tap), и теперь он отлично работает.

Ответ 5

В iOS есть проблемы с событием клика в целом (событие в Интернете, если вы тестируете мобильное устройство с реагированием в консоли браузера).

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

Я нашел это потому, что если вы занимаетесь мобильной разработкой (консоль хром или даже эмулятор iOS), вам придется использовать (косвенное) событие.

Проблема была трудно понять из-за неправильного поведения, когда вы используете (нажмите) on,

то, что обычно не кликабельно, эта проблема возникает.

Итак, если вы используете (нажмите) на таких элементах и ​​(щелкните), все должно работать нормально.

Мое предложение состоит в том, чтобы использовать оба варианта к лучшему!