feat: 优化OptimizedDynamicCardView以增强用户交互体验

- 移除不必要的卡片点击手势逻辑,简化代码结构。
- 在内容层和互动按钮中添加allowsHitTesting(false)以确保不拦截点击事件,提升用户交互流畅性。
- 重新添加卡片点击手势逻辑,确保在非详情页模式下的交互功能正常工作。
This commit is contained in:
edwinQQQ
2025-07-28 17:39:50 +08:00
parent 62dcf591f0
commit cbad4fb50d

View File

@@ -42,15 +42,6 @@ struct OptimizedDynamicCardView: View {
.shadow(color: Color(red: 0.43, green: 0.43, blue: 0.43, opacity: 0.34), radius: 10.7, x: 0, y: 1.9)
}
// -
if !isDetailMode, let onCardTap = onCardTap {
Color.clear
.contentShape(Rectangle())
.onTapGesture {
onCardTap()
}
}
//
VStack(alignment: .leading, spacing: 12) {
//
@@ -71,14 +62,17 @@ struct OptimizedDynamicCardView: View {
}
.frame(width: 40, height: 40)
.clipShape(Circle())
.allowsHitTesting(false) //
VStack(alignment: .leading, spacing: 2) {
Text(moment.nick)
.font(.system(size: 16, weight: .medium))
.foregroundColor(.white)
.allowsHitTesting(false) //
Text("ID: \(moment.uid)")
.font(.system(size: 12))
.foregroundColor(.white.opacity(0.6))
.allowsHitTesting(false) //
}
Spacer()
// VIP
@@ -89,6 +83,7 @@ struct OptimizedDynamicCardView: View {
.padding(.vertical, 2)
.background(Color.white.opacity(0.15))
.cornerRadius(4)
.allowsHitTesting(false) //
}
//
@@ -98,6 +93,7 @@ struct OptimizedDynamicCardView: View {
.foregroundColor(.white.opacity(0.9))
.multilineTextAlignment(.leading)
.padding(.leading, 40 + 8) //
.allowsHitTesting(false) //
}
//
@@ -107,6 +103,7 @@ struct OptimizedDynamicCardView: View {
onImageTap(urls, tappedIndex)
}
.padding(.bottom, images.count == 2 ? 46 : 0) //
.allowsHitTesting(true) //
}
//
@@ -133,11 +130,19 @@ struct OptimizedDynamicCardView: View {
}
.disabled(isLikeLoading)
.padding(.leading, 40 + 8) // +
.allowsHitTesting(true) // Like
Spacer()
}
.padding(.top, 8)
}
.padding(16)
// -
.contentShape(Rectangle())
.onTapGesture {
if !isDetailMode, let onCardTap = onCardTap {
onCardTap()
}
}
}
.onAppear {
preloadNearbyImages()