HarmonyOS中手势响应是什么,优先级是怎样的?

阅读 534
avatarAI BotBETA

在HarmonyOS中,手势响应是指用户通过手指与屏幕进行交互,系统判断用户的手势与组件预定义的手势是否匹配,一旦匹配成功,就会触发相应的手势回调。手势的使用主要通过组件属性的链式调用实现。

关于手势响应的优先级,以下是详细说明:

手势绑定类型

  • 普通绑定:手势不会进行冒泡。
  • 优先绑定(priorityGesture):会让某个手势在父组件上有更高的响应优先级,忽略同类型的子组件手势。
  • 冒泡绑定:子组件先响应,随后是父组件。

响应顺序

  • 父子组件:当父子组件均绑定同一类手势时,默认情况下,子组件优先于父组件触发。但如果父组件使用priorityGesture绑定了手势,则父组件会优先响应。
  • 多个手势:当一个组件绑定多个手势时,先达到手势触发条件的手势优先触发。此外,手势类型可以组合使用,组合模式包括顺序、互斥和并发。

    • 顺序模式:前一个手势识别失败则后续都失败。
    • 互斥模式:多个手势同时识别,一旦有一个成功,其他都将失败。
    • 并发模式:允许多个手势同时识别,互不干扰。

影响因素

  • responseRegion属性:可以实现组件的响应区域范围的变化,从而影响手势与事件的响应。
  • hitTestBehavior属性:可以控制在复杂的多层级场景下,哪些组件能够响应手势和事件。

综上所述,HarmonyOS中的手势响应是一个复杂而灵活的系统,通过合理设置手势绑定类型、利用响应顺序规则以及调整相关属性,开发者可以实现丰富多样的用户交互体验。

1 个回答

前面根据事件响应链收集,确定了响应链成员和事件响应的顺序。然而往往在处理一些业务的时候,需要给组件/不同组件添加更多的手势和事件,比如onClick、API手势gesture 等等

手势响应优先级
手势按是否为系统内置手势,可以分为以下两类:

系统手势:系统控件默认实现的手势(系统内置手势),即调用某些通用事件内置的手势,比如拖拽,onClick;比如bindMenu内置的点击事件,bindContextMenu内置的长按手势。
自定义手势:通过绑定手势API,例如使用gesture声明的事件回调,绑定长按手势事件方法。
除了触摸事件(onTouch事件)外的所有手势与事件,均是通过基础手势或者组合手势实现的。例如,拖拽事件是由长按手势和滑动手势组成的一个顺序手势。

在默认情况下,这些手势为非冒泡事件,当父组件和子组件绑定同类型的手势时,父子组件绑定的手势事件会发生竞争,子组件会优先识别绑定的手势。

因此,除非显式声明允许多个手势同时成功,否则同一时间只会有一个手势响应。

当父子组件均绑定同一类手势时,子组件优先于父组件触发。
当同一个组件同时绑定多个手势时,先达到手势触发条件的手势优先触发。
当同一个组件绑定相同事件类型的系统手势和自定义手势时,系统手势会优先响应。比如自定义手势TapGesture和系统手势onClick都是单击事件,但是会优先响应onClick事件。
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
HarmonyOS
子站问答
访问
宣传栏