Мне удалось воспроизвести это - если вы изменяете состояние текста в UITextField во время ввода с размахом - и только во время ввода с размахом, он будет пытаться повторно вставить содержимое с размахом (даже если вы вернете false), что приведет к повторному запускуВаше делегатское событие, которое запускает рекурсивный цикл.
Это что-то вроде хака, но вы можете поймать его с помощью чего-то вроде
private var lastEntry: String?
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string.count > 1 && string == lastEntry { // implies we're swiping or pasting
print("Caught unwanted recursion")
return
}
lastEntry = string
if let text = textField.text as NSString? {
let txtAfterUpdate = text.replacingCharacters(in: range, with: string)
textField.text = txtAfterUpdate
}
return false
}
Это остановит пользователей от вставки / смахивания одной и той же вещи дважды подряд, но по крайней мере этоЯ позволю им смахивать, пока Apple исправит их проблему.