Методы UIScrollViewDelegate, не работающие с подклассом UITextView

У меня есть класс MyTextView который наследует от UITextView, у меня тоже есть MyViewController который является подклассом UIViewController, MyViewController реализует UITextViewDelegate протокол и устанавливается в качестве делегата MyTextView,

MyViewController реализует некоторые из методов делегата из UITextViewDelegate (лайк - (void)textViewDidChange:(UITextView *)textView) и все они работают нормально. Тем не менее, когда я пытаюсь реализовать - (void)scrollViewDidScroll:(UIScrollView *)scrollView или некоторые или другие методы делегата прокрутки, которые они не вызывают. Насколько я понимаю, это должно работать, так как UITextView наследуется от UIScrollView а также UITextViewDelegate соответствует UIScrollViewDelegate который объявляет методы прокрутки в вопросе.

Странно то, что если я захожу в IB и меняю класс текстового представления с MyTextView в UITextView все методы делегата вызываются, включая прокрутку.

2 ответа

Решение

Возможно, вы повторно синтезировали delegate свойство, которое будет означать, что теперь существует новая переменная экземпляра, приватная для вашего класса, и синтезированные методы доступа, указывающие на эту приватную переменную. Таким образом, любые реализации суперкласса, которые ссылаются на делегат по переменной экземпляра, а не свойству, не будут проходить (те, кто ссылается на свойство, будут, конечно, вызывать ваши средства доступа к подклассам). Похоже, может быть UITextField использует собственность и UIScrollView использует экземпляр!

Я не пробовал это, но это может иметь какое-то отношение к протоколам?

В этом случае может помочь третий ответ: Как использовать пользовательские делегаты в Objective-C

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