テキストフィールドがあり、小数点以下2桁まで入力を制限したいと考えています。スウィフト4では、テキストフィールドの入力を小数点以下2桁に制限する方法は?
12.34のような番号が許可されているが、私はそれをどのように行うのです12.345ない
?
テキストフィールドがあり、小数点以下2桁まで入力を制限したいと考えています。スウィフト4では、テキストフィールドの入力を小数点以下2桁に制限する方法は?
12.34のような番号が許可されているが、私はそれをどのように行うのです12.345ない
?
テキストフィールドのデリゲートとしてあなたのコントローラを設定し、提案されている文字列が要件を満たしているかどうかを確認:
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
}
Guysは、ここでの解決策です:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let dotString = "."
if let text = textField.text {
let isDeleteKey = string.isEmpty
if !isDeleteKey {
if text.contains(dotString) {
if text.components(separatedBy: dotString)[1].count == 2 {
return false
}
}
}
}
}
使用 'UITextFieldDelegate'」 '' shouldChangeCharactersIn' +小数点以下をXの位に丸める – nathan