2013-11-19 2 views
0

Итак, у меня есть родительский класс, который является прокруткой, которая имеет UIView в качестве подсмотра. Я хочу, чтобы иметь возможность отправлять сообщение через делегацию в subview whenenever scrolview scrolls. Однако я не могу заставить его работать, поскольку обычно делегирование используется для отправки уведомлений от дочернего к родительскому.ios назначает делегата родителя одним из его дочерних элементов

Так что я в основном делаю это:

myScrollView.delegate = myView; 
[myScrollView addSubview:myView]; 

И тогда в реализации для MyView у меня есть:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    NSLog(@"Scroll view scrolled!"); 
} 

Но это не работает. Я включил UIScrollViewDelegate в качестве одного из протоколов, которые myView способен обрабатывать, но все равно ничего.

+0

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

ответ

1

Почему бы вам не создать метод для вашего ребенка, сохранить ссылку на него и напрямую вызвать его. Что-то вроде:

@interface MyCustomView : UIView { 

} 

-(void)youShouldKnowThatTheScrollScrolled; 

@implementation MyCustomView 

-(void)youShouldKnowThatTheScrollScrolled { 
    NSLog(@"OK"); 

} 

@interface MyCustomScrollView :UIScrollView<UIScrollViewDelegate> { 
    MyCustomView *innerView; 
} 


@implementation MyCustomScrollView 

-(void)someSetupMethod { 
self.delegate = self; 

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
[innerView youShouldKnowThatTheScrollScrolled]; 

} 
+0

Кажется, что это сработает, но, похоже, не работает настройка делегата scrollview (scrollViewDidScroll никогда не вызывается). – user1855952

+0

Nevermind, я получил его на работу! Спасибо! – user1855952

Смежные вопросы