• 1000 однако код, который я закомментировал, единственная разница в том, что пользователь не может удалить после того, как он / она введет число.
Принимая во внимание, что пользователь мог удалить после того, как он / она ввел номер, если я заменил текущий код с закомментированным кодом.
введите описание изображения здесь
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let existingTextHasDecimalSeperator = textField.text?.range(of: ".")
let replacementTextHasDecimalSeperator = string.range(of: ".")
// let replacementTextCharacterSet = CharacterSet(charactersIn: string)
// let replacementTextIsAlphabetic = (replacementTextCharacterSet.isDisjoint(with: CharacterSet.letters) == false)
///This means an element in set A intersect with an element in set B
let replacementTextCharacterSet = CharacterSet(charactersIn: string)
let replacementTextIsAlphabetic = (replacementTextCharacterSet.isSubset(of: CharacterSet.letters) == true)
if (existingTextHasDecimalSeperator != nil && replacementTextHasDecimalSeperator != nil) || replacementTextIsAlphabetic {
return false
} else {
return true
}
Код, который был закомментирован выше, работает так, как задумано, однако текущий код - нет, и я не смог понять почему.
Не могли бы вы объяснить мне причину, по которой я не могу удалить то, что ввожу позже.
Если я использую .isSubset = true
, logi c мне кажется таким же.