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

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

1.用sourceTool区分是否可行?

let fingerType:SourceTool=event.sourceTool;

打印日志显示:

SourceTool.Finger=undefined; 
SourceTool.Pen=undefined;

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

阅读 873
1 个回答

问题一:可以用,只是要改下代码;首先获取到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);

打印如下:

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

此时使用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")
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进