Какова функция 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).