HarmonyOS 鸿蒙Next 如何让Text组件的bindSelectionMenu展示的菜单能够和组件通用属性bindPopup展示的菜单一样在用户触碰到屏幕时就自动消失?

HarmonyOS 鸿蒙Next 如何让Text组件的bindSelectionMenu展示的菜单能够和组件通用属性bindPopup展示的菜单一样在用户触碰到屏幕时就自动消失? 如何让Text组件的bindSelectionMenu展示的菜单能够和组件通用属性bindPopup展示的菜单一样在用户触碰到屏幕时就自动消失?

2 回复

可以在外层添加一个点击事件

.onClick(() => {
  this.controller.closeSelectionMenu();
})

更多关于HarmonyOS 鸿蒙Next 如何让Text组件的bindSelectionMenu展示的菜单能够和组件通用属性bindPopup展示的菜单一样在用户触碰到屏幕时就自动消失?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,Text组件的bindSelectionMenu展示的菜单默认需要用户点击菜单外的区域才会消失,而bindPopup展示的菜单在用户触碰到屏幕其他区域时会自动消失。要让bindSelectionMenu的菜单行为与bindPopup一致,可以通过以下方式实现:

  1. 监听触摸事件:在Text组件外部添加一个触摸事件监听器,当用户触碰到屏幕时,手动关闭bindSelectionMenu的菜单。

  2. 使用onTouch事件:在Text组件或其父组件上添加onTouch事件,触发时调用hideSelectionMenu方法来关闭菜单。

示例代码片段如下:

import { Text, TouchEvent } from '@ohos.arkui';

let textComponent: Text = ...; // 获取Text组件实例

textComponent.onTouch((event: TouchEvent) => {
  if (event.type === 'TouchDown') {
    textComponent.hideSelectionMenu();
  }
});

通过这种方式,bindSelectionMenu的菜单在用户触碰到屏幕其他区域时会自动消失,行为与bindPopup展示的菜单一致。

回到顶部