我正在嘗試將一個簡單的滑動操作添加到我的串列中。但是由于某種原因無法按下按鈕。當我執行完整的滑動時,它可以作業。
這是我的代碼:
var listView: some View {
List {
ForEach(Array(debits.enumerated()), id: \.element) { index, debit in
HStack {
Text(debit.name)
.swipeActions(allowsFullSwipe: true) {
Button(action: {
print("Hi \(index)")
}, label: {
Image(systemName: "slider.horizontal.3")
})
}
Spacer()
Text(String(debit.value))
.frame(width: 70, alignment: .trailing)
Text("€")
Divider().padding(.leading, 5)
Toggle("", isOn: $debits[index].toggle)
.onChange(of: debit.toggle) { newValue in
calculateAvailable()
}
.frame(width: 50)
}
}
}.listStyle(.plain).lineLimit(1)
}
就像我說的那樣,按下按鈕不會列印任何東西,但完全滑動會列印。
uj5u.com熱心網友回復:
將.swipeActions修飾符移動到HStack包含整行的位置:
List {
ForEach(Array(debits.enumerated()), id: \.element) { index, debit in
HStack {
Text(debit.name)
Spacer()
Text(String(debit.value))
.frame(width: 70, alignment: .trailing)
Text("€")
Divider().padding(.leading, 5)
Toggle("", isOn: $debits[index].toggle)
.onChange(of: debit.toggle) { newValue in
calculateAvailable()
}
.frame(width: 50)
}
.swipeActions(allowsFullSwipe: true) {
Button(action: {
print("Hi \(index)")
}, label: {
Image(systemName: "slider.horizontal.3")
})
}
}
}
另外,我建議id在您的Debit結構中添加一個穩定的。像這樣的東西:
struct Debit: Hashable, Identifiable {
var name: String
var value: Double
var toggle: Bool
let id = UUID()
}
并將其用作您的 id:
ForEach(Array(debits.enumerated()), id: \.element.id) { index, debit in
如果您沒有列舉以獲取索引,那么您可以簡單地迭代,debits因為這些專案是Identifiable:
ForEach($debits) { $debit in
uj5u.com熱心網友回復:
這作業正常,HStack 是你的問題。嘗試在 HStack 上設定 swipaction
List {
ForEach(YourList, id: \.self) { debit in
Text(debit)
.swipeActions(allowsFullSwipe: true) {
Button(action: {
print("Hi \(index)")
}, label: {
Text("test")
})
}
}
}
enter code here
uj5u.com熱心網友回復:
我剛剛找到了答案。在某處點擊時,我使用此代碼關閉鍵盤。這阻止了按鈕被按下。
var body: some View {
VStack {
my code
}
.onTapGesture {
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/515819.html
標籤:列表按钮迅捷滑动手势
