HarmonyOS 如何区分手指(Finger)和手写笔(Pen)

在屏幕上滑动时需要区分是手指(Finger)和手写笔(Pen),使用sourceTool枚举类型,在手机上测试Finger和Pen都是undefined。

1.用sourceTool区分是否可行?

let fingerType:SourceTool=event.sourceTool;
  • 1.

打印日志显示:

SourceTool.Finger=undefined; 
SourceTool.Pen=undefined;
  • 1.
  • 2.

2.是不是在带笔的其他设备上如平板,才会显示Finger和Pen的值?

HarmonyOS
2024-12-26 14:38:35
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
aquaa

问题一:可以用,只是要改下代码;首先获取到let fingerType: SourceTool = event.sourceTool;这里获取到的是枚举的"Value",是number类型的值;无法和SourceTool.Unknown做等号判断;可以通过以下代码查询到SourceTool所有的枚举key/Value。

const enumKeys = Object.keys(SourceTool).filter(key => isNaN(Number(key)));
const enumValues = enumKeys.map(key => SourceTool[key as keyof object]);
console.log('Keys: ', enumKeys);
console.log('Values: ', enumValues);
  • 1.
  • 2.
  • 3.
  • 4.

打印如下:

Keys: Unknown,FINGER,PEN,MOUSE,TOUCHPAD,JOYSTICK 
Values: 0,1,2,7,9,10
  • 1.
  • 2.

此时使用value去判断,所以修改代码如下:

if (fingerType === 1) {
  console.log("dianju_手指_down")
} else if (fingerType == 2) {
  console.log("dianju_手写笔_down")
} else if (fingerType == 0) {
  console.log("dianju_未知物_down")
} else if (fingerType == 7) {
  console.log("dianju_鼠标_down")
} else if (fingerType == 9) {
  console.log("dianju_触摸板_down")
} else if (fingerType == 10) {
  console.log("dianju_操纵手柄_down")
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
分享
微博
QQ
微信
回复
2024-12-26 17:14:00
相关问题
HarmonyOS 区分手机,pad方法
514浏览 • 1回复 待解决
单击双击事件如何区分
1066浏览 • 1回复 待解决
HarmonyOS 如何区分截屏录屏事件
886浏览 • 1回复 待解决
HarmonyOS 手写
646浏览 • 1回复 待解决
HarmonyOS 怎么区分debugrelease
1637浏览 • 1回复 待解决
求告知如何接入手写服务
1068浏览 • 1回复 待解决
HarmonyOS 手写签名实现
763浏览 • 1回复 待解决
元服务的api集应用api集 如何区分
2475浏览 • 1回复 待解决
关于平板触屏的开发
5292浏览 • 1回复 待解决
从HAP的拆包中,如何区分是HARHSP
2874浏览 • 1回复 待解决
HarmonyOS 手写板保存报错
458浏览 • 1回复 待解决
HarmonyOS Web如何区分弹窗类型
493浏览 • 1回复 待解决