Какова функция NSRange

Я запутался в отношении функциональности NSRange.

Какова функция NSRange в этом коде?

shouldChangeTextIn range: NSRange

1 ответ

Foundation старый pre-Swift фреймворк Он в основном написан на Objective-C и использует его типы. NSRange является структурой C, интенсивно используемой в Objective-C в сочетании с NSString,

NSString превращается в Swift как String и большинство методов, использующих NSRange был преобразован в методы с использованием Range (или другие типы Swift). Однако в некоторых методах тип Objective C все еще существует по разным причинам совместимости. UITextViewDelegate а также UITextFieldDelegate являются яркими примерами.

Правильно использовать NSRange вы должны преобразовать String к NSString во-первых, например:

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText: String) -> Bool
    let previousText = (textView.text ?? "") as NSString
    let newText = previousText.replacingCharacters(in: range, with: replacementText)

   ...
}

В этом методе range описывает диапазон строки, которая изменяется это locations говорит вам, где новый текст помещается и его length говорит вам, сколько из предыдущего текста заменяется / удаляется.

Например, NSRange(location: 2, length: 1) с replacementText: "" говорит вам, что третий символ удаляется (например, при нажатии клавиши Backspace).

Другие вопросы по тегам