Ionic 4 - 在平板电脑上点击vs touchstart(点击/移动配置出现问题)

问题描述 投票:4回答:1

我们开发了一款安装在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 button click ionic4 touchstart
1个回答
2
投票

尝试这种方法来微调“敲击”的灵敏度:

如果你使用的是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 }
    ]
  ],

现在将按钮绑定到(点击),然后播放阈值,以查看是否可以为用户找到合适的余额。

© www.soinside.com 2019 - 2024. All rights reserved.