Потомок в качестве представителя родителей - PullRequest
0 голосов
/ 02 сентября 2011

Допустим, я хочу создать собственное текстовое представление с максимальным ограничением символов. И я хочу сделать это на уровне ниже - в текстовом представлении.

Я думаю о создании CustomTextView : UITextView, где customTextView.delegate будет тем же объектом - customTextView (self.delegate = self). Определение класса будет CustomTextView : UITextView <UITextVIewDelegate>, и я бы реализовал – textView:shouldChangeTextInRange:replacementText: для выполнения логики ограничения.

Но как-то это не работает. Могу ли я получить объяснение, почему или что может быть не так и как достичь своих целей?

1 Ответ

1 голос
/ 02 сентября 2011

Если вы создаете подкласс UITextView, зачем вам устанавливать себя в качестве делегата? Делегат используется только для уведомления кода за пределами UITextView о том, что что-то изменилось в UITextView. Это означает, что UITextView сначала уведомляется об изменениях в себе, и с помощью делегата вы можете уведомить внешний код (UIViewController и т. Д.) О том, что произошло. Если вы создаете подкласс UITextView, он должен получать уведомления об изменениях от ОС.

Однако, просматривая документацию, я не вижу, как вы будете отслеживать встроенные события только по подклассам. Вот статья, которую я нашел с помощью поиска Google: Подкласс UITextView

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