Перехватывать сообщения делегата Objective-C внутри подкласса

У меня есть подкласс UIScrollView, в котором мне нужно внутренне реагировать на поведение прокрутки. Тем не менее, viewcontroller все равно должен будет прослушивать прокручиваемые обратные вызовы делегатов, поэтому я не могу напрямую украсть делегат в моем компоненте.

Есть ли способ сохранить свойство с именем «делегат» и просто прослушивать сообщения, отправленные вдоль него? , или как-то внутренне перехватить свойство делегата и переслать сообщения наружу после выполнения некоторого кода?

31
задан nhgrif 2 May 2016 в 12:31
поделиться

1 ответ

Да, но вам придется переопределить каждый метод делегата в документах . По сути, создайте второе свойство делегата и реализуйте протокол делегата. Когда вызываются методы делегата, позаботьтесь о своем бизнесе, а затем вызовите тот же метод для второго делегата из только что запущенного метода делегата. Например.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    // Do stuff here
    if ([self.delegate2 respondsToSelector:@selector(scrollViewDidScroll:)]) {
        [self.delegate2 scrollViewDidScroll:scrollView];
    }
}
-4
ответ дан 27 November 2019 в 21:21
поделиться