js-apis-devicestatus-draginteraction.md 3.6 KB
Newer Older
N
ningning 已提交
1
# @ohos.deviceStatus.dragInteraction(拖拽)
D
duyufan 已提交
2

D
duyufan 已提交
3
 拖拽功能模块,提供注册和取消拖拽状态监听的能力。 
D
duyufan 已提交
4 5 6 7 8 9 10 11 12 13 14 15 16

> **说明**
>
>   - 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>
>  - 本模块接口均为系统接口。

## 导入模块

```js
import dragInteraction from '@ohos.deviceStatus.dragInteraction'
```

S
sunwenyu123 已提交
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
##  DragState

拖拽状态。

**系统能力**:SystemCapability.Msdp.DeviceStatus.Drag

| 名称                       | 值                             | 说明                              |
| --------                     |  -----------------               |  -----------------               |
| MSG_DRAG_STATE_START |  1   | 表示开始拖拽。 |
| MSG_DRAG_STATE_STOP |  2  |  表示结束拖拽。  |
| MSG_DRAG_STATE_CANCEL |  3  |  表示取消拖拽。  |

**示例**

```js
enum DragState {
    MSG_DRAG_STATE_START = 1,
    MSG_DRAG_STATE_STOP = 2,
    MSG_DRAG_STATE_CANCEL = 3
}
```

N
ningning 已提交
39
## dragInteraction.on('drag')
D
duyufan 已提交
40 41 42 43 44 45 46 47 48 49 50

on(type: 'drag', callback: Callback<DragState>): void;

注册监听拖拽状态。

**系统能力**:SystemCapability.Msdp.DeviceStatus.Drag

**参数**

| 参数名                | 类型                                                             | 必填 | 说明                            |
| --------             | ----------------------------                                    | ---- | ----------------------------   |
D
duyufan 已提交
51
| type                 | string                                                          |  是  | 监听类型,固定取值为 'drag' |
D
duyufan 已提交
52 53 54 55 56 57
| callback             | Callback<[DragState](#dragstate)> |  是  | 回调函数,异步返回拖拽状态消息 |

**示例**

```js
try {
S
ArkTS  
sunwenyu123 已提交
58
  dragInteraction.on('drag', (data : DragState) => {
D
duyufan 已提交
59 60 61 62 63 64 65
    console.log(`Drag interaction event: ${JSON.stringify(data)}`);
  });
} catch (error) {
  console.log(`Register failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

N
ningning 已提交
66
## dragInteraction.off('drag')
D
duyufan 已提交
67 68 69 70 71 72 73 74 75 76 77

off(type: 'drag', callback?: Callback<DragState>): void;

取消监听拖拽状态。

**系统能力**:SystemCapability.Msdp.DeviceStatus.Drag

**参数**

| 参数名                | 类型                                                              | 必填    | 说明                           |
| --------             | ----------------------------                                     | ----   | ----------------------------   |
D
duyufan 已提交
78
| type                 | string                                                           |  是    | 监听类型,固定取值为 'drag' |
D
duyufan 已提交
79 80 81 82
| callback             | Callback<[DragState](#dragstate)> |  否  | 需要取消注册的回调函数,若无此参数,则取消当前应用注册的所有回调函数。 |

**示例**

S
sunwenyu123 已提交
83
```ts
D
duyufan 已提交
84
// 取消注册单个回调函数
S
ArkTS  
sunwenyu123 已提交
85
function single_callback(event : DragState) {
D
duyufan 已提交
86 87 88 89
  console.log(`Drag interaction event: ${JSON.stringify(event)}`);
  return false;
}
try {
S
ArkTS  
sunwenyu123 已提交
90 91
  dragInteraction.on('drag', single_callback);
  dragInteraction.off("drag", single_callback);
D
duyufan 已提交
92 93 94 95
} catch (error) {
  console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```
S
sunwenyu123 已提交
96
```ts
D
duyufan 已提交
97
// 取消注册所有回调函数
S
ArkTS  
sunwenyu123 已提交
98
function all_callback(event : DragState) {
D
duyufan 已提交
99 100 101 102
  console.log(`Drag interaction event: ${JSON.stringify(event)}`);
  return false;
}
try {
S
ArkTS  
sunwenyu123 已提交
103
  dragInteraction.on('drag', all_callback);
D
duyufan 已提交
104 105 106 107 108 109 110
  dragInteraction.off("drag");
} catch (error) {
  console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```