作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在对 UITextField 进行子类化,以构建一个文本字段,用户可以在其中以某种货币输入一定金额的金额。我希望占位符只能获取或私有(private)。相反,您设置货币和您希望占位符的金额。然后文本字段自动适应字符串,例如到一定数量的小数等。
下面的代码停在: 占位符 = 旧值
这是有道理的,因为它不断调用 setter 并以无限循环结束。我找不到更好的方法来做到这一点,有人知道我如何才能做到这一点吗?
谢谢
var placeholderAmount: Float = 0{
didSet{
self.placeholder = String(self.roundedStringWithAmount(placeholderAmount, to: self.numberOfDecimalPlaces)) + self.currencyString
}
}
override var placeholder: String?{
didSet{
placeholder = oldValue
print("Placeholder Set to CurrencyTextField. Do not do that")
}
}
最佳答案
您不能限制父类(super class)中声明的变量的访问级别。这有点 hacky,但您可以设置一个允许不无限循环的标志:
var ignoreUpdates = false
override var placeholder: String?{
didSet{
if !ignoreUpdates {
ignoreUpdates = true
placeholder = oldValue
ignoreUpdates = false
print("Placeholder Set to CurrencyTextField. Do not do that")
}
}
}
关于ios - 在 didSet 中将 UITextField 占位符设为私有(private),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33791814/
我是一名优秀的程序员,十分优秀!