uni-app uni-swipe-action 滑动操作使用插槽多操作时IOS上操作错位

uni-app uni-swipe-action 滑动操作使用插槽多操作时IOS上操作错位

9 回复

请问你现在解决了吗?我现在也遇到同样的问题

更多关于uni-app uni-swipe-action 滑动操作使用插槽多操作时IOS上操作错位的实战教程也可以访问 https://www.itying.com/category-93-b0.html


换了个组件 他们这边没人管

最后怎么解决的

@touchend.stop=“handleBtnClick”

@touchend.stop=“handleBtnClick” 解决了这个问题,但不会自动收回去了 很严重的问题,他们这边确实问题解决速度太慢了

同问题!!!

使用@touchend.stop="handleBtnClick"可以解决这个问题,但不会自动收回去,在navigateTo的success方法中调用this.$refs.swipeAction[0].closeAll()就可以了

卧槽,2024年2月20日, PM 06:08:39了还没解决

在使用 uni-appuni-swipe-action 组件时,如果在 iOS 上遇到滑动操作错位的问题,尤其是在使用插槽进行多操作时,可以尝试以下几种解决方案:

1. 检查样式问题

首先,确保你的样式在 iOS 上渲染正常。iOS 和 Android 在 CSS 渲染上可能会有一些差异,特别是在使用 flex 布局或 transform 时。

.uni-swipe-action {
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

.uni-swipe-action__content {
  flex: 1;
}

.uni-swipe-action__btn {
  flex-shrink: 0;
}

2. 使用 v-ifv-show 控制插槽内容

如果你在插槽中动态渲染多个操作按钮,确保使用 v-ifv-show 来控制它们的显示。这样可以避免在渲染时出现布局错乱。

<uni-swipe-action>
  <template v-slot:left>
    <view v-if="showButton1" class="button">操作1</view>
    <view v-if="showButton2" class="button">操作2</view>
  </template>
  <template v-slot:right>
    <view v-if="showButton3" class="button">操作3</view>
    <view v-if="showButton4" class="button">操作4</view>
  </template>
</uni-swipe-action>

3. 使用 uni.createSelectorQuery 动态计算宽度

如果错位是由于动态内容导致的宽度计算问题,可以使用 uni.createSelectorQuery 动态获取元素的宽度并设置。

export default {
  data() {
    return {
      buttonWidth: 0
    };
  },
  mounted() {
    this.calculateButtonWidth();
  },
  methods: {
    calculateButtonWidth() {
      const query = uni.createSelectorQuery().in(this);
      query.select('.button').boundingClientRect(data => {
        this.buttonWidth = data.width;
      }).exec();
    }
  }
};

4. 使用 scroll-view 包裹内容

有时,使用 scroll-view 包裹滑动操作的内容可以解决 iOS 上的布局问题。

<uni-swipe-action>
  <scroll-view scroll-x="true">
    <view class="button">操作1</view>
    <view class="button">操作2</view>
    <view class="button">操作3</view>
    <view class="button">操作4</view>
  </scroll-view>
</uni-swipe-action>

5. 检查 uni-swipe-action 版本

确保你使用的是最新版本的 uni-swipe-action 组件。旧版本可能存在一些已知的 bug,更新到最新版本可能会解决问题。

6. 使用 transform 修复错位

如果错位是由于 transform 引起的,可以尝试手动调整 transform 的值。

.uni-swipe-action__btn {
  transform: translateX(0) !important;
}

7. 使用 z-index 调整层级

有时,元素的层级关系可能会导致错位,尝试调整 z-index

.uni-swipe-action__btn {
  z-index: 1;
}

8. 使用 position: absolutefixed

在某些情况下,使用 position: absoluteposition: fixed 可以解决布局错位的问题。

.uni-swipe-action__btn {
  position: absolute;
  right: 0;
}

9. 检查 uni-app 框架版本

确保你使用的 uni-app 框架是最新版本,旧版本可能存在一些兼容性问题。

10. 使用 uni-swipe-actionoptions 配置

uni-swipe-action 组件可能提供了一些配置选项,尝试调整这些配置来解决问题。

<uni-swipe-action :options="swipeOptions">
  <template v-slot:left>
    <view class="button">操作1</view>
    <view class="button">操作2</view>
  </template>
</uni-swipe-action>
export default {
  data() {
    return {
      swipeOptions: {
        threshold: 50,
        autoClose: true
      }
    };
  }
};
回到顶部