Делегирование UIScrollView не работает - нужна помощь! - PullRequest
0 голосов
/ 25 октября 2009

Я серьезно теряю волосы из-за простой задачи, которая превратилась в ад. Итак, у меня есть подкласс UIScrollView - MyScrollView и подкласс UIViewController StoryViewController, использующий это представление прокрутки. Мне нужно знать, когда прокручивается прокрутка, что мне делать? Я пытаюсь делегировать!

// StoryViewController.h
@interface StoryViewController : UIViewController <UIScrollViewDelegate>

// StoryViewController.m
// init
scrollView  = [[MyScrollView alloc] init];
scrollView.delegate = self;

// delegated function
- (void)scrollViewDidScroll:(UIScrollView *)s {
    NSLog(@"TEST");
}

Редактировать: некоторые NSLogs

Self: <StoryViewController: 0xfce090>
ScrollView Delegate: <StoryViewController: 0xfce090>
WebView Delegate: <StoryViewController: 0xfb1a30>

Редактирование: подкласс UIWebView (MyWebView), который является подвидом MyScrollView, работает нормально и (void) webViewDidFinishLoad: (UIWebView *) webView (в том же storyviewcontroller.m) печатает сообщение.

Ошибок нет, сборка в порядке, работает нормально. После прокрутки - ничего не печатается.

Что я делаю не так?

Ответы [ 3 ]

4 голосов
/ 25 октября 2009

Это может быть красная сельдь, но вы вызываете alloc и init, а не alloc и initWithFrame :. Я полагаю, вы добавляете scrollView в свой метод viewDidLoad? Это контроллер на базе XIB? Вы пытались добавить представление прокрутки в файл XIB и настроить его там? Вы пытались добавить другие методы делегата?

3 голосов
/ 25 октября 2009

Вы уверены, что scrollView на самом деле отображаемый вид прокрутки? Несколько вещей, о которых я могу подумать, я бы проверил в порядке отчаяния:

  1. Убедитесь, что я действительно добавил scrollView в self.view после загрузки self.view
  2. Убедитесь, что когда я добавляю scrollView в self.view, это тот же объект, который был у меня при назначении делегата
  3. Проверка, когда я добавляю scrollView, что делегат scrollView все еще установлен на контроллере представления
  4. Проверьте, что собственно, фактически установлено для контроллера представления при назначении делегата
  5. Попробуйте использовать обычный UIScrollView и посмотрите, изменится ли что-нибудь
0 голосов
/ 25 октября 2009

Итак, еще раз, награда за глупость переходит к sniurkst. На самом деле это был UIWebView, который был неправильно добавлен в UIScrollView, так что для меня это было «о боже, мой вид с прокруткой работает», в то время как это все еще была прокрутка UIWebView самостоятельно.

Извините за мою глупость. Спасибо всем за попытку помочь мне, в следующий раз я добавлю больше примеров кода, чтобы вы могли видеть, что происходит, и посмеяться над моими ошибками:)

И если кто-то укажет мне пример того, как правильно использовать ScrollView с WebView внутри, чтобы ScrollView отвечал за всю прокрутку, я был бы очень благодарен.

...