确定滑动事件是左滑动还是右滑动
Determine whether a swipe event is for a left swipe or a right swipe
本文关键字:事件 更新时间:2023-09-26
我正在使用Angular 2和ionic 2,并试图捕捉左右滑动。我可以捕捉到滑动,但无法确定是向左还是向右滑动。
在我的html中,我有:
<ion-content (swipe)="swipeEvent($event)">
每次发生滑动时,都会调用swipeEvent
。
我的swipeEvent
javascript代码如下所示:
swipeEvent(event){
alert('swipe');
}
如何确定是向左滑动还是向右滑动。
正如Ionic 2文档中所述,手势似乎是建立在HammerJS之上的。
您可以针对特定的手势来触发特定的功能。构建在Hammer.js之上…
当您触发滑动事件时,对象会被传递到绑定方法,它包含一个选项e.direction
,它是一个与滑动方向相对应的数值。
以下是HammerJS文档中定义的方向常数列表
Name Value DIRECTION_NONE 1 DIRECTION_LEFT 2 DIRECTION_RIGHT 4 DIRECTION_UP 8 DIRECTION_DOWN 16 DIRECTION_HORIZONTAL 6 DIRECTION_VERTICAL 24 DIRECTION_ALL 30
示例
给定您的ion-content
设置
swipeEvent(e) {
if (e.direction == 2) {
//direction 2 = right to left swipe.
}
}
有用提示
或者(看起来Ionic在他们的手势文档中没有涉及到这一点),你可以在HTML标签中使用HammerJS事件来针对特定的滑动方向。
<ion-content (swipeleft)="swipeLeftEvent($event)">
只是通过反复试验才发现这一点,而且它似乎适用于大多数活动!
html
<ion-navbar *navbar>
<ion-title>Main</ion-title>
</ion-navbar>
<ion-content padding class="main">
// height: 300px; background-color: #000; => visible for test
<div (pan)='swipeEvent($event)'></div>
</ion-content>
打字
export class MainPage {
constructor(public nav: NavController) { }
swipeEvent($e) {
// swipe left $e.direction = 2;
// pan for get fired position
console.log($e.deltaX+", "+$e.deltaY);
}
}
如果deltaX>0,则向右滑动,否则向左滑动。我喜欢使用pan
而不是swipe
,因为我想制作与Scrollyee 相同的幻灯片图像
您可以使用Ionic绑定单独的事件处理程序,如:
<ion-content on-swipe-left="onSwipeLeft()" on-swipe-right="onSwipeRight()">
您也可以使用on-swipe
,如:
<ion-content on-swipe="swiped($event)">
$scope.swiped = function($e) {
var what = '';
switch ($e.gesture.direction) {
case 'up':
what = 'Swiped up';
break;
case 'down':
what = 'Swiped down';
break;
case 'left':
what = 'Swiped left';
break;
case 'right':
what = 'Swiped right';
break;
default:
what = 'Swiped ???';
break;
}
alert(what)
}
使用Ionic 2
<ion-content (swipe)="swipeEvent($event)">
swipeEvent($e) {
var what = '';
switch ($e.gesture.direction) {
case 'up':
what = 'Swiped up';
break;
case 'down':
what = 'Swiped down';
break;
case 'left':
what = 'Swiped left';
break;
case 'right':
what = 'Swiped right';
break;
default:
what = 'Swiped ???';
break;
}
alert(what)
}
Ionic Docs
只需更新-从Ionic 3.19.0开始,功能如下:
<div (swipe)="swipeEvent($event)" />
和
swipeEvent($e) {
if($e.offsetDirection == 4){
// Swiped right, for example:
this.week.prevWeek();
} else if($e.offsetDirection == 2){
// Swiped left, for example:
this.week.nextWeek();
}
}
此外,如果你只关心左右滑动,还有一个更快的内联解决方案:
<div (swipe)="($event.direction === 4) ? calendar.back() : calendar.forward()" />
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- Jquery:未触发select事件
- JsFiddle上的鼠标事件不起作用
- 只覆盖箭头键滚动事件
- $window.ga在AngularJS事件中未定义
- cron作业与Javascript计时事件
- ng更改事件不适用于Dropdown