angular - Ionic 4 - 平板电脑上的点击与触摸启动(点击/移动配置问题)
问题描述
我们开发了一个 Ionic 4 应用程序,该应用程序安装在 Android 平板电脑上的 POS(销售点)中。
问题是,<ion-button (click)="doSomething">
事件通常不会被识别,因为用户站在非常低的平板电脑前并且没有进行干净的点击,而是一个非常小的水平移动,离子似乎将其识别为(触摸)移动。这在廉价的三星 Tab A 和三星 Tab 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 }
]
],
现在将您的按钮绑定到(点击),然后使用阈值来查看是否可以为您的用户找到合适的平衡点。
推荐阅读
- flutter - 有没有办法从 asp.net core webapi 向 Flutter 应用推送通知?
- swift - SwiftUI 通用链接不适用于 NFC
- amazon-web-services - 在负载均衡器后面无法访问我的 Ec2 实例
- javascript - jquery.min.js:2 Uncaught TypeError: Cannot read property 'replace' of undefined (javascript)(laravel)
- php - 用 php 发布推文的问题
- c++ - 矢量显示迭代器提前结束
- java - 如何设置缓存的过期时间?
- visual-studio-code - 在 VSCode 中下载 Vim 扩展的脚本
- java - How to access hashmap object with class object as key
- java - 如何通过反射api从java将值注入groovy脚本中的字段?