作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个文本字段,我想将条目限制为最多 2 位小数。
12.34 这样的数字是允许的,但 12.345 是不允许的
我该怎么做?
最佳答案
将您的 Controller 设置为文本字段的委托(delegate),并检查建议的字符串是否满足您的要求:
override func viewDidLoad() {
super.viewDidLoad()
textField.delegate = self
textField.keyboardType = .decimalPad
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let oldText = textField.text, let r = Range(range, in: oldText) else {
return true
}
let newText = oldText.replacingCharacters(in: r, with: string)
let isNumeric = newText.isEmpty || (Double(newText) != nil)
let numberOfDots = newText.components(separatedBy: ".").count - 1
let numberOfDecimalDigits: Int
if let dotIndex = newText.index(of: ".") {
numberOfDecimalDigits = newText.distance(from: dotIndex, to: newText.endIndex) - 1
} else {
numberOfDecimalDigits = 0
}
return isNumeric && numberOfDots <= 1 && numberOfDecimalDigits <= 2
}
关于ios - 如何在 swift 4 中将文本字段条目限制为小数点后两位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45443289/
我是一名优秀的程序员,十分优秀!