Как работает замена символов в делегате? - PullRequest
0 голосов
/ 26 апреля 2020

Я новичок в Swift и узнаю о делегатах:

class ZipCodeTextFieldDelegate: NSObject, UITextFieldDelegate {

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

        var newText = textField.text! as NSString
        newText = newText.replacingCharacters(in: range, with: string) as NSString // this line

        return newText.length <= 5
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()

        return true;
    }
}

Это в основном делегат, ограничивающий количество символов до 5. Но я не совсем уверен, какую роль этот метод replacingCharacters играет в этой функции. Документация Apple показывает, что она

Возвращает новую строку, в которой символы в указанном диапазоне получателя заменяются данной строкой.

, что кажется довольно простым , Он заменяет некоторый диапазон символов заменой на ваш выбор. Я вижу, что textField имеет параметр, называемый range и replacementString, но какой диапазон предоставляется и на что они заменяются?

Основной ViewController, который используется делегатом в не предоставляет ни один из них. Он просто создает экземпляр делегата и применяет его к соответствующему textField

    let zipCodeDelegate = ZipCodeTextFieldDelegate()

    // MARK: Outlets

    @IBOutlet weak var textField: UITextField!


    // MARK: Life Cycle

    override func viewDidLoad() {
        super.viewDidLoad()

        self.textField.delegate = self.zipCodeDelegate

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...