Почему UITextField добавил пробелы в конце вставленных строк? - PullRequest
1 голос
/ 03 апреля 2020

Потратив время на отладку, я понял, что UITextField добавляет пробелы в мои строки, вставленные из буфера обмена.

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        var input: String
        let newString = string.trimmingCharacters(in: .whitespacesAndNewlines)   // newString = "123"
        if let oldString = textField.text {                                      // oldString = "456"
            input = oldString
            input.insert(contentsOf: newString, at: input.index(input.startIndex, offsetBy: range.location))  // rang.location = 2, input = "4 123 56" but it supposed to be "412356"
        } else {
            input = newString
        }
        return true  
}

У меня есть два вопроса:
1- Почему это происходит только при вставке в секунду и больше раз?
2- Как мне избежать добавления этих пробелов в мои вставленные строки?

1 Ответ

2 голосов
/ 03 апреля 2020

Вы, вероятно, наблюдаете эффекты свойства smartInsertDeleteType. Вы можете изменить это так:

class ViewController: UIViewController {

    @IBOutlet weak var textField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        textField.smartInsertDeleteType = .no
    }
}
...