我们开发了一款安装在Android平板电脑上的POS(销售点)的Ionic 4应用程序。
问题是,<ion-button (click)="doSomething">
事件经常无法识别,因为用户站在平板电脑前面,这是非常低的并且没有干净的咔哒声,但是离子似乎识别为(触摸)移动的非常小的水平移动。这种情况发生在便宜的三星标签A上,但也出现在三星标签S3上。
按钮实际上改变了它的颜色,如触摸,但它不会触发。这在Android键盘上并不高兴,因此键盘上的按钮似乎更能容忍小动作。
我们尝试了许多组合
(click) tappable
tap
(click) (touchmove)
(clik) (tap)
(tap)
(click) (touchstart)
(touchmove)
(touchstart)
唯一一个工作是最后一个。 (它不能自然地用在元素列表中,因为它会阻止滚动,但我们可以忍受它)。
现在我觉得这是一个不知何故的肮脏的解决方法。有没有更好的解决方案来解决这个问题,比如配置按钮内的移动容差? (事实上,只要我的手指停留在按钮区域,我就想识别咔哒声,这就是角键盘的工作方式)。
欢迎任何建议。
顺便说一句:我不记得在Ionic 3上如此严重地解决这个问题,但我可能错了。
尝试这种方法来微调“敲击”的灵敏度:
如果你使用的是Angular 6+(Ionic 4)而不是Angular <5.2(其中hammerjs是浏览器模块的一部分),请在main.ts中导入hammerjs:
import "hammerjs";
创建hammer.config.ts提供程序:
import { Injectable } from '@angular/core';
import { HammerGestureConfig } from '@angular/platform-browser';
@Injectable()
export class MyHammerGestureConfig extends HammerGestureConfig {
overrides = <any> {
'tap': { threshold: 50, posTreshold: 2, time: 2000 } // default 2, 10
'pan': { threshold: 60, posTreshold: 2 } // default 2, 10
};
};
在你的app.module.ts中执行以下操作:
..
import { HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
import { MyHammerGestureConfig } from '../providers/hammer.config';
..
providers: [
..
[
{ provide: HAMMER_GESTURE_CONFIG, useClass: MyHammerGestureConfig }
]
],
现在将按钮绑定到(点击),然后播放阈值,以查看是否可以为用户找到合适的余额。