我正在尝试向 ScrollView 添加安全区域,但注意到在 iOS17 上我无法点击 ScrollView 安全区域内的任何内容。
示例代码:
ScrollView {
VStack {
ForEach(0..<100, id: \.self) { i in
Button("Button \(i)") { print("tapped \(i)" ) }
}
}
.frame(maxWidth: .infinity)
}
.safeAreaInset(edge: .top, content: {
Spacer().frame(width: 0, height: 500)
})
在 iOS17 上运行此程序,将按钮向上滚动到安全区域将使它们不可点击。
除了使用ZStack或overlay之外,在iOS17上还有其他解决方案吗?在我的情况下,这两者都不是一个选项,因为我的主要目标是移动 ScrollView 的刷新指示器,这(据我所知)只能通过安全区域来实现。
您可以使用列表吗?这样,无论出于何种原因,它们都可以被点击。现在,您只需使用 SwiftUI 就可以很好地修改列表样式属性。
List(0..<100, id: \.self) { i in
Button("Button \(i)") { print("tapped \(i)" ) }
}
.frame(maxWidth: .infinity)
.refreshable {
print("refreshing")
}
.safeAreaInset(edge: .top, content: {
Rectangle().frame(width: 0, height: 500)
})
或者,如果您只需要将刷新指示器放在不同的位置,则可以使用默认的 ProgressView() 将其放置在任意位置。比如,
if refreshing {
ProgressView()
}