Browse Source

修复iOS系统上搜索框隐藏时页面被强制下拉的问题

pull/1/head
Trae AI 2 months ago
parent
commit
0316e51b67
  1. 53
      pages/index/index.js
  2. 2
      pages/index/index.wxml
  3. 22
      pages/index/index.wxss

53
pages/index/index.js

@ -139,24 +139,24 @@ Page({
const moveY = e.touches[0].clientY;
const diffY = moveY - this.data.startY;
// 如果移动距离超过20px,视为拖动
if (Math.abs(diffY) > 20) {
this.setData({
isDragging: true
});
// 更新按钮位置
let newTop = this.data.sidebarBtnTop + diffY * 2; // 转换为rpx
let newTop = this.data.sidebarBtnTop + diffY * 3;
// 限制按钮在屏幕范围内
const screenHeight = wx.getSystemInfoSync().screenHeight * 2; // 转换为rpx
const btnHeight = 180; // 按钮高度,单位rpx
const boundary = 300; // 边界值,限制拖动范围
const systemInfo = wx.getSystemInfoSync();
const screenHeight = systemInfo.screenHeight * 2;
const btnHeight = 90;
const minTop = screenHeight * 0.2;
const maxTop = screenHeight * 0.6;
if (newTop < boundary) {
newTop = boundary;
} else if (newTop > screenHeight - btnHeight - boundary) {
newTop = screenHeight - btnHeight - boundary;
if (newTop < minTop) {
newTop = minTop;
} else if (newTop > maxTop) {
newTop = maxTop;
}
this.setData({
@ -193,12 +193,22 @@ Page({
console.log('首页初始化')
const savedBtnTop = wx.getStorageSync('sidebarBtnTop');
const savedBtnHidden = wx.getStorageSync('sidebarBtnHidden');
if (savedBtnTop !== '') {
const systemInfo = wx.getSystemInfoSync();
const screenHeight = systemInfo.screenHeight * 2;
let defaultTop = screenHeight * 0.5;
if (savedBtnTop !== '' && savedBtnTop !== -100) {
const minTop = screenHeight * 0.2;
const maxTop = screenHeight * 0.6;
if (savedBtnTop >= minTop && savedBtnTop <= maxTop) {
defaultTop = savedBtnTop;
}
}
this.setData({
sidebarBtnTop: savedBtnTop,
sidebarBtnTop: defaultTop,
sidebarBtnHidden: savedBtnHidden || false
});
}
this.checkAndRestoreLoginStatus()
this.loadGoods()
},
@ -212,9 +222,21 @@ Page({
const app = getApp();
app.updateCurrentTab('index');
app.globalData.showTabBar = true;
const savedBtnHidden = wx.getStorageSync('sidebarBtnHidden');
this.setData({
sidebarBtnHidden: savedBtnHidden || false
});
this.checkAndRestoreLoginStatus()
},
onHide: function () {
this.setData({
sidebarBtnHidden: true
});
},
onPullDownRefresh: function() {
this.onRefresh()
},
@ -767,6 +789,9 @@ Page({
// 跳转到招商合作页面
navigateToCooperation: function() {
this.setData({
sidebarBtnHidden: true
});
wx.navigateTo({
url: '/pages/cooperation/index'
})

2
pages/index/index.wxml

@ -109,7 +109,7 @@
<!-- 箭头按钮 -->
<view class="sidebar-arrow" bindtap="toggleSidebarBtn">
<text class="arrow-icon {{sidebarBtnHidden ? 'arrow-right' : 'arrow-left'}}"></text>
<text class="arrow-icon {{sidebarBtnHidden ? 'arrow-right' : 'arrow-left'}}"></text>
</view>
</view>

22
pages/index/index.wxss

@ -25,26 +25,28 @@ page {
padding: 10rpx 0;
margin-bottom: 20rpx;
overflow: hidden;
transition: opacity 0.4s ease-in-out, transform 0.4s ease-in-out;
-webkit-transition: opacity 0.4s ease-in-out, -webkit-transform 0.4s ease-in-out;
transition: opacity 0.4s ease-in-out, transform 0.4s ease-in-out, visibility 0.4s ease-in-out;
-webkit-transition: opacity 0.4s ease-in-out, -webkit-transform 0.4s ease-in-out, visibility 0.4s ease-in-out;
will-change: opacity, transform;
opacity: 1;
transform: translateY(0);
-webkit-transform: translateY(0);
/* 使用固定高度,避免iOS系统重新计算布局 */
height: 180rpx;
visibility: visible;
height: auto;
/* 固定高度,避免iOS上的布局抖动 */
min-height: 160rpx;
}
/* 顶部搜索区域完全隐藏状态 - 使用transform隐藏,避免影响页面布局 */
/* 顶部搜索区域完全隐藏状态 - 用于平滑收缩高度 */
.top-hidden {
pointer-events: none;
opacity: 0;
/* 使用transform将搜索区域移出视口,而不是改变高度 */
transform: translateY(-100%);
-webkit-transform: translateY(-100%);
/* 保留固定高度,避免页面布局变化 */
height: 180rpx;
/* 保留padding和margin,避免页面布局变化 */
pointer-events: none;
visibility: hidden;
/* 保持高度不变,避免iOS上的布局抖动 */
height: auto;
min-height: 160rpx;
padding: 10rpx 0;
margin-bottom: 20rpx;
}

Loading…
Cancel
Save