有没有一种方法可以使列表的整个行都不可单击?
我正在尝试使其仅在按钮行上可单击。
如您所见,如果我尝试单击按钮行中的任何位置,无论是按钮本身还是周围的空白,都将其视为水龙头:
有没有一种方法可以使您只能单击按钮本身,而不能单击按钮周围的空白? (即行本身)
这是代码:
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
List {
NavigationLink(destination: Text("Next screen")) {
Text("Item")
}
Button(action: {}) {
Text("Button")
}
.padding(.vertical, 12)
.frame(maxWidth: .infinity)
.background(Color(UIColor.secondarySystemBackground))
}
}
}
}
是的,在此实现中,我绝对必须将这些元素放在List
中,因此我实际上没有其他选择(例如,通常使用VStack
)
答案 0 :(得分:3)
将其设置为非默认按钮样式,例如“普通”或您的自定义
Button(action: {}) {
Text("Button")
.frame(maxWidth: .infinity, maxHeight: .infinity)
.contentShape(Rectangle())
}
.buttonStyle(PlainButtonStyle()) // << here !!
另请参见this帖子,例如使用自定义按钮样式执行类似操作