Как мы реализуем selectionRectsForRange: из протокола UITextInput?

Как мы реализуем selectionRectsForRange: из протокола UITextInput? Кто-нибудь понял это? Это просто очень зависит от конкретных потребностей варианта использования? Или есть что-то в рамках, которые будут вызывать этот метод?

Чтобы заставить компилятор замолчать, конечно, уместно заглушить метод, но будет ли возвращение nil или пустой NSArray причинить какой-либо вред?

1 ответ

Решение

В соответствии с сеансом 220 в WWDC12 этот метод был добавлен для поддержки подклассов UITextView, где реализация отображает свой собственный текст. К сожалению, их пример кода из этого сеанса недоступен, хотелось бы посмотреть на него, чтобы увидеть, пропустил ли я что-нибудь в своей реализации.

Это довольно похоже на то, как вы будете реализовывать -firstRectForRange: за исключением того, что вы вернете все данные, которые охватывают текущий выбор.

Кроме того, вам придется подкласс UITextSelectionRect (это абстрактный класс, такой как UITextPosition/UITextRange), который вы бы возвращали массив из этого метода. Обязательно рассчитайте containsStart а также containsEnd свойства правильно и возвращают только YES для каждого из всех один раз по всем возвращаемым участкам выбора. Эти свойства используются UITextView, чтобы решить, куда поместить выбор, изменяющий размер "весла".

Возврат пустого массива (или, я полагаю, nil) будет означать, что UITextView не должен рисовать какие-либо ректы выбора для текущего выбора.

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