Подтвердить что ты не робот

Почему экземпляр UIWebView не вызывает scrollViewDidScroll?

Документация iOS гласит, что класс UIWebView соответствует UIScrollViewDelegate. Но экземпляр UIWebView не вызывает метод scrollViewDidScroll своего контроллера. Делегат настроен как раз на

[webView setDelegate:self];

и webViewDidFinishLoad называется успешно. Контроллер реализует как делегаты, UIWebViewDelegate, так и UIScrollViewDelegate, например:

@interface WebviewController : UIViewController<UIWebViewDelegate, UIScrollViewDelegate>{
    UIWebView *webView;
}

Просмотр SO приводит к этому решению :

@implementation UIWebView(CustomScroll)
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
    [self.delegate scrollViewDidScroll: scrollView];
}
@end

Этот подход категории в основном то же самое: вызов метода прокрутки делегата scrollViewDidScroll. Итак, почему первый подход не работает?

4b9b3361

Ответ 1

Думаю, вы настроили делегат только для UIWebView. Попробуйте установить делегат scrollView.

webView.scrollView.delegate = self

он должен быть в порядке.

Ответ 2

Это неверно. Если вы будете использовать:

@implementation UIWebView(CustomScroll)
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
    [self.delegate scrollViewDidScroll: scrollView];
}
@end

Вы потеряете фокус при попытке ввода данных на странице iOS7 и более

Вам необходимо реализовать пользовательский класс для UIWevView и перезаписать scrollViewDidScroll:

- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
[super scrollViewDidScroll:scrollView];
[((id<UIScrollViewDelegate>)self.delegate) scrollViewDidScroll:scrollView];}