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

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

0 голосов
/ 20 декабря 2018

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

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

shouldChangeTextIn range: NSRange

1 Ответ

0 голосов
/ 20 декабря 2018

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).

...