【发布时间】:2020-10-27 21:36:04
【问题描述】:
我有一个带有 ionic/ anuglar 6 和hammerJs 的项目,但我决定更新到 anuglar9.1.6 和 ionic 5.0.0。
问题是我的手势不再起作用了!我的 press 和 pressup 无法识别。
但是我已经导入了 HammerModule..
请任何人都可以帮助我:/ .. 我确定有事可做
谢谢!
请在 home.ts 和 home.html 下方找到。
app.module:
imports: [HammerModule, BrowserModule, IonicModule.forRoot(), AppRoutingModule],
providers: [
StatusBar,
SplashScreen,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
{
provide: HAMMER_GESTURE_CONFIG,
useClass: IonicGestureConfig
},
],
离子手势.ts
@Injectable()
export class IonicGestureConfig extends HammerGestureConfig {
buildHammer(element: HTMLElement) {
const mc = new (<any>window).Hammer(element);
for (const eventName in this.overrides) {
if (eventName) {
mc.get(eventName).set(this.overrides[eventName]);
}
}
return mc;
}
}
import {Component} from '@angular/core';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage {
public progress: number = 0;
public pressState: string = "released";
// Interval function
protected interval: any;
onPress($event) {
console.log("onPress", $event);
this.pressState = 'pressing';
this.startInterval();
}
onPressUp($event) {
console.log("onPressUp", $event);
this.pressState = 'released';
this.stopInterval();
}
startInterval() {
const self = this;
this.interval = setInterval(function () {
self.progress = self.progress + 1;
}, 50);
}
stopInterval() {
clearInterval(this.interval);
}
}
<ion-header>
<ion-toolbar>
<ion-title>
Long Press Demo
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content padding>
<h2> Button Progress: {{ progress }}</h2>
<h2> Presses State: {{ pressState }}</h2>
<ion-button (press)="onPress($event)" (pressup)="onPressUp($event)">Press Me</ion-button>
</ion-content>
【问题讨论】:
-
只是好奇:你为什么决定使用 Hammer 而不是 Ionic 内置手势?
-
我想实现 x 和 y 滑动,但离子手势对于自定义手势来说很酷。我错了 ?稍等一下,如果您对 x 和 y 有想法,请使用 ionic-gesture 滑动。我已经有 x 滑动
标签: angular typescript ionic-framework hammer.js ionic5