|
|
@ -26,6 +26,7 @@ Page({ |
|
|
lastScrollTop: 0, |
|
|
lastScrollTop: 0, |
|
|
isScrollLocked: false, |
|
|
isScrollLocked: false, |
|
|
isSearchBarFullyHidden: false, |
|
|
isSearchBarFullyHidden: false, |
|
|
|
|
|
isSearchBarFocused: false, |
|
|
|
|
|
|
|
|
// 回到顶部按钮
|
|
|
// 回到顶部按钮
|
|
|
showBackToTop: false, |
|
|
showBackToTop: false, |
|
|
@ -688,6 +689,23 @@ Page({ |
|
|
}) |
|
|
}) |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// 搜索框获得焦点
|
|
|
|
|
|
onSearchFocus: function() { |
|
|
|
|
|
// 当搜索框获得焦点时,固定显示搜索框,不隐藏
|
|
|
|
|
|
this.setData({ |
|
|
|
|
|
isSearchBarFocused: true, |
|
|
|
|
|
isSearchBarFullyHidden: false |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// 搜索框失去焦点
|
|
|
|
|
|
onSearchBlur: function() { |
|
|
|
|
|
// 当搜索框失去焦点时,恢复正常的隐藏逻辑
|
|
|
|
|
|
this.setData({ |
|
|
|
|
|
isSearchBarFocused: false |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
// 切换地区选择器
|
|
|
// 切换地区选择器
|
|
|
toggleRegionPicker: function() { |
|
|
toggleRegionPicker: function() { |
|
|
this.setData({ |
|
|
this.setData({ |
|
|
@ -848,21 +866,26 @@ Page({ |
|
|
// 滚动事件处理
|
|
|
// 滚动事件处理
|
|
|
onScroll: function(e) { |
|
|
onScroll: function(e) { |
|
|
const { scrollTop } = e.detail; |
|
|
const { scrollTop } = e.detail; |
|
|
|
|
|
const lastScrollTop = this.data.lastScrollTop; |
|
|
|
|
|
|
|
|
// 只控制搜索区域的完全显示/隐藏状态,使用CSS类统一控制过渡效果
|
|
|
// 只控制搜索区域的完全显示/隐藏状态,使用CSS类统一控制过渡效果
|
|
|
// 简化逻辑,避免iOS上的兼容性问题
|
|
|
let isSearchBarFullyHidden = this.data.isSearchBarFullyHidden; |
|
|
let isSearchBarFullyHidden = false; |
|
|
|
|
|
|
|
|
|
|
|
// 增加iOS兼容性处理,使用更简单的触发逻辑
|
|
|
// 如果搜索框被选中,则不隐藏
|
|
|
|
|
|
if (!this.data.isSearchBarFocused) { |
|
|
|
|
|
// 判断滚动方向
|
|
|
|
|
|
if (scrollTop > lastScrollTop) { |
|
|
|
|
|
// 向下滚动,隐藏搜索框
|
|
|
if (scrollTop > 150) { |
|
|
if (scrollTop > 150) { |
|
|
// 当滚动距离超过150rpx时,完全隐藏搜索区域
|
|
|
|
|
|
isSearchBarFullyHidden = true; |
|
|
isSearchBarFullyHidden = true; |
|
|
} |
|
|
} |
|
|
|
|
|
} else { |
|
|
// 当滚动回到顶部时,显示搜索区域
|
|
|
// 向上滚动,显示搜索框
|
|
|
if (scrollTop <= 100) { |
|
|
if (scrollTop <= 100) { |
|
|
isSearchBarFullyHidden = false; |
|
|
isSearchBarFullyHidden = false; |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// 更新搜索框状态
|
|
|
// 更新搜索框状态
|
|
|
this.setData({ |
|
|
this.setData({ |
|
|
|