dcloudio / dcloudio/uni-app

movable-view 长按后,ios会偶现无法触发change事件

Open
#5,383 7 comments 0 reactions 1 assignee Claimed by @GRCmade View on GitHub
Dominant language
JavaScript
Stars
41.6k
Forks
3.7k
Avg merge
7h 6m
Merged PRs (30d)
6

Description

### 发行方式

小程序

### 具体平台

ios真机基本都有这个问题,如ios18.3.1;微信开发者工具选择ios设备也能复现(但机率较小)

### 开发环境

Windows

### 项目创建方式

HBuilderX

### 依赖版本

HBuilder X 4.45

uni.getSystemInfo() 返回的部分信息:
```
system: "iOS 10.0.1"
ua: undefined
uniCompileVersion: "4.45"
uniCompilerVersion: "4.45"
uniPlatform: "mp-weixin"
uniRuntimeVersion: "4.45"
version: "8.0.5"
```

### 问题描述

原本是想基于 movable-view 实现长按拖拽排序,但发现ios偶尔在拖拽时不会触发change事件;ps:movable-view拖动效果确实丝滑

### 重现步骤

```html



text

export default {
components:{ },
data() {
return { }
},
onLoad() {

},
onPageScroll(event) {
console.log('0-0-0-0-0-0-0-0-0-0-0-0-0-0-');
},
methods: {
handleDragStart(event) {
console.log('---1111---开始拖动', event);
},
handleLongpress(event) {
console.log('---2222---长按事件', event);
},
handleTouchMove(event) {
console.log('---3333---TouchMove事件', event);
},
handleMoving(event) {
console.log('---4444---change事件', event);
},
handleDragEnd(event) {
console.log('---5555---拖动结束', event);
}
}
}

.test-page {
height: 100vh;
overflow: auto;

movable-view {
display: flex;
align-items: center;
justify-content: center;
height: 150rpx;
width: 150rpx;
background-color: #007AFF;
color: #fff;
}

movable-area {
height: 100vh;
width: 100%;
background-color: #D8D8D8;
overflow: hidden;
}

}

```

正常逻辑来说:会依次触发 `touchstart、longpress、touchmove、change和touchend` 对应的事件,但在ios偶尔只会触发 `touchmove` 却不触发 `change`(其他事件会触发)

因为要基于 change 事件的返回值 `event.detail = {x: x, y: y, source: source}` 去计算元素的位置,不触发change的情况下,拖拽就无效了

### 期望行为

_No response_

### 实际行为

_No response_

### 截图或录屏

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.