ionic2 tap vs click

Jos*_*osa 19 tap click ionic2 ionic3 angular

我从angular2和ionic2开始;

在ionic2中,我有一个按钮,可以调用我的组件的方法.像这样:

<button secondary clear large>
</button>
Run Code Online (Sandbox Code Playgroud)

我应该使用(click)- angular2 OR (tap) - ionic2?

像这样:

(click)

<button secondary clear large (click)="pause()">
</button>
Run Code Online (Sandbox Code Playgroud)

(tap)

<button secondary clear large (tap)="pause()">
</button>
Run Code Online (Sandbox Code Playgroud)

有一些区别吗?您可以(tap)http://ionicframework.com/docs/v2/components/#gestures中看到

谢谢.

Iva*_*ers 51

如果制作移动应用程序,(tap)可能会更好.这是因为当使用(click)动作总是执行时,即使在意外敲击时也是如此.(tap)如果用户持有较长时间,则不会执行.如果你想要一个需要长时间点击的按钮,你可以使用(press).

请注意,在某些离子版本中,(click)事件不会在iOS上执行.因此,使用(tap)将是推荐的解决方案.

  • 您已突出显示我需要在我的应用上的某些位置使用点击的确切原因.如果你使用`(click)`和`(按)`那么两个都在'按'上执行.如果使用`(tap)`和`(按)`则不是这种情况 (3认同)
  • @JoeriShoeby - 在表格单元格上尝试了 `event.stopPropagation()` 滑动删除并单击以显示详细信息。当使用 `click()` 时,它会显示细节,而 `stopPropagation()` 没有效果。改为`tap()` 解决了这个问题。 (2认同)

Wil*_*ris 11

我认为这实际上取决于你想要用户体验的"本地化".

(tap)活动来自Hammer.js图书馆.如果您查看该链接,您将看到为了触发点击事件必须满足的要求.

要注意的第一个要求是时间选项,默认值为250ms.这意味着如果按下的时间超过250毫秒,则事件不会触发.

需要注意的第二个要求是阈值选项,默认值为2(不确定这是什么单位,可能是像素).这意味着如果印刷机的移动大于2,则事件不会触发.例如,在屏幕上方从左到右移动手指,然后在此移动过程中按下元素,根据移动速度,事件可能不会触发.

然而

(click)在我刚刚指出的两种情况下,事件仍将触发,只要释放按下时它仍然在目标元素内.


起初我说"它真的取决于"的原因是基于其他应用程序如何处理这些场景(每个应用程序可能会有所不同,并且它可能也会根据用例的结果而有所不同).

据我所知,我检查的Android应用程序上的按钮(具有可视结果的按钮,例如导航或弹出消息)的工作方式与(click)Angular提供的事件相同.

我无法评论IOS应用程序如何使用与我未测试过的原理相同的原理.

我并不是说在每个用例中(click)都应该使用而不是(tap)尝试考虑其他本机应用程序的行为,并从那里决定哪个最合适.