Методы 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