【问题标题】:Angular/HammerJS - Avoid rotate gestures on pinch in/outAngular/HammerJS - 避免在捏合/捏出时旋转手势
【发布时间】:2019-06-17 23:38:53
【问题描述】:

我也在尝试在不启动旋转手势的情况下启动捏合手势。 我的目的是分别启动这两个手势。

我已经在我的模块中构建了锤子配置,如下:

import * as Hammer from 'hammerjs';
import { HammerGestureConfig } from '@angular/platform-browser';

export class HammerConfig extends HammerGestureConfig{

    buildHammer(element: HTMLElement)
    {
        const hammerManager = new Hammer(element);
        let rotate = new Hammer.Rotate({enable: true});
        let pinch = new Hammer.Pinch({enable: true});
        let pan = new Hammer.Pan();

        pan.requireFailure([rotate, pinch]);
        pinch.recognizeWith(rotate);
        hammerManager.add([rotate, pan, pinch]);

        return hammerManager;
    }
}

我正在尝试:

pinch.dropRecognizeWith(rotate);

rotate.dropRecognizeWith(pinch);

此更改不起作用。仅启动旋转手势...

如果我添加:

pinch.recognizeWith(rotate);

它会启动这两个事件...

有没有办法单独启动它们? 我将不胜感激任何形式的帮助

【问题讨论】:

  • 你可以为这个问题添加更多代码吗?你如何初始化hammer.js
  • 我已经用锤子配置更新了我的帖子,提前谢谢
  • 我晚上看看

标签: angular typescript rotation hammer.js pinchzoom


【解决方案1】:

我查看了我在 Angular 5、6 和 7 应用程序中使用 HammerJS 的项目,并使用不同的方式来配置 HammerJS

您在特定情况下禁用旋转/捏合/平移的想法是正确的,按照documentation 可以。

Hire 是我没有requireFailurerecognizeWith 的示例配置:

export class MyHammerConfig extends HammerGestureConfig {
    overrides = <any>{
        'swipe': {direction: Hammer.DIRECTION_ALL}, // override default settings
        'pan': {direction: Hammer.DIRECTION_ALL}
    };
}

@NgModule({
    imports: [
        AppModule
    ],
    providers: [{
        provide: HAMMER_GESTURE_CONFIG,
        useClass: MyHammerConfig
    }],
    bootstrap: [AppComponent]
})
export class AppBrowserModule {
}

这样你的配置应该是这样的:

export class MyHammerConfig extends HammerGestureConfig {
    overrides = <any>{
        'rotate': {
            direction: Hammer.DIRECTION_ALL,
            enable: true
        }, // override default settings
        'pinch': {
            direction: Hammer.DIRECTION_ALL,
            enable: true,
            recognizeWidth: 'rotate'
        },
        'pan': {
            direction: Hammer.DIRECTION_ALL,
            requireFailure: ['rotate, pinch']
        }
    };
}

如果这不适合您,请告诉我。明天我会尝试解决你的问题,因为我今天没有更多的时间。

根据 HammerJS 文档hire,还可以查看有关覆盖的 Angular 文档。

【讨论】:

  • 嗨,克里斯。首先,感谢您尽快回复。我已经按照您在帖子中提出的建议更改了锤子配置,但不幸的是它不起作用,因为旋转和捏合事件是同时启动的......
  • 感谢您的回复 - 我会在今晚寻找这个并告诉您问题出在哪里。根据文档,这应该可以工作,所以我们有一个错误:)
  • 目前我没有任何结果...我尝试使用 singleTap 和 doubleTap 并且来自文档的现成代码部分无法按预期工作...
  • 我会再试一次;)
  • 今天我有很多工作,所以我不能向你保证我会寻找解决方案,但我可以在周末尝试返回 Hammer.js
猜你喜欢
  • 1970-01-01
  • 2016-10-24
  • 2012-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 2018-12-02
相关资源
最近更新 更多