Я хочу ограничить то, что вводится в UITextView, значениями Double, каждый Double разделяется пробелом. Конечно, это означает, что допускается только одна десятичная точка.
Следующий код удаляет буквы и символы, но не работает для десятичных чисел. После ввода десятичной точки следующий введенный символ удаляет десятичную точку.
Что я делаю не так ???
import UIKit
class ViewController: UIViewController, UITextViewDelegate {
@IBOutlet weak var dataInputField: UITextView!
var currentEntryHasDecimalPoint:Bool = false
var validChars: Set<Character> = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", " "]
override func viewDidLoad() {
super.viewDidLoad()
dataInputField.delegate = self
}
func textViewDidChange(_ textView: UITextView ) {
if let str = dataInputField.text, !str.isEmpty {
let validChar:Bool = Set(str).isSubset(of: validChars)
if validChar {
let newChar = str.last!
switch newChar {
case ".":
currentEntryHasDecimalPoint = true
validChars.remove(".")
case " ":
currentEntryHasDecimalPoint = false
validChars.insert(".")
default:
print("default")
}
}
else {
dataInputField.deleteBackward()
}
}
}
}