作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像这样的文本字段包装器:
public struct SUIDoubleField: View {
@Binding
private var value: Double
private let placeholder: String
private let formatter: NumberFormatter
private var focused: FocusState<Bool>.Binding
public init(value: Double, placeholder: String, formatter: NumberFormatter, focused: FocusState<Bool>.Binding, onChange: @escaping (Double) -> Void) {
_value = Binding(
get: { value },
set: { onChange($0) })
self.placeholder = placeholder
self.formatter = formatter
self.focused = focused
}
public var body: some View {
TextField(placeholder, value: $value, formatter: formatter)
.focused(focused)
.textFieldStyle(.roundedBorder)
.keyboardType(.decimalPad)
.toolbar {
ToolbarItemGroup(placement: .keyboard) {
Button(LOC(.dismissKeyboardButton)) {
focused = false // Error
}
}
}
}
}
在这里我无法更新 focus
值。我遇到了这两个错误:
Cannot assign to property: 'self' is immutable
Cannot assign value of type 'Bool' to type 'FocusState<Bool>.Binding'
我尝试传递 onDone
回调,并从该组件外部更新 focused
状态。这很好用,但我认为传递绑定(bind)更方便。我该怎么做?
最佳答案
一个值应该分配给包装值而不是绑定(bind)自己,比如
Button(LOC(.dismissKeyboardButton)) {
focused.wrappedValue = false // << here !!
}
关于SwiftUI 如何更新 FocusState.Binding?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71202500/
我有一个像这样的文本字段包装器: public struct SUIDoubleField: View { @Binding private var value: Double pri
我正在尝试基于字符串数组创建一个 TextField 列表,当在键盘上按下返回键时,我想创建一个新的 TextField 并使用新的 @FocusState SwiftUI 属性将其聚焦 我已经构建了
我很高兴看到 TextField 增强:focused(...): https://developer.apple.com/documentation/swiftui/view/focused(_:)
我正在为我的 SwiftUI 应用程序使用 View 模型,并且希望在 View 模型中也有焦点状态,因为表单非常复杂。 这个在 View 中使用@FocusState 的实现按预期工作,但不是我想要
我是一名优秀的程序员,十分优秀!