委派UIScrollView不起作用 - 需要帮助!

时间:2009-10-25 04:18:11

标签: iphone cocoa-touch delegates uiscrollview

由于简单的任务变成了地狱,我正在严重失去我的头发。所以我有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 个答案:

答案 0 :(得分:4)

这可能是一个红色的鲱鱼,但你正在调用alloc和init,而不是alloc和initWithFrame:。我假设您在viewDidLoad方法中添加了scrollView?这是一个基于XIB的控制器吗?您是否尝试在XIB文件中添加scrollview并在那里进行设置?您是否尝试过添加其他委托方法?

答案 1 :(得分:3)

您确定scrollView实际上是显示的滚动视图吗?我能想到的一些事情,我会按照绝望的顺序检查:

  1. 检查我是否在加载self.view后将scrollView添加到self.view
  2. 检查当我将scrollView添加到self.view时,它与我分配代理时的对象相同
  3. 检查当我添加scrollView时,scrollView的委托仍设置为视图控制器
  4. 在分配代理时,检查self是否实际设置为视图控制器
  5. 尝试使用常规UIScrollView并查看是否有任何更改

答案 2 :(得分:0)

所以,再一次,愚蠢的奖励就是狡猾的。事实上,UIWebView被无情地添加到UIScrollView中,所以对我而言“我的上帝,我的滚动视图正在工作”,而它仍然是UIWebView自己滚动。

抱歉,我的愚蠢。谢谢大家试图帮助我,下次我会添加更多代码示例,这样你就可以看到发生了什么,并嘲笑我的错误:))

如果有人想给我一个例子如何正确使用ScrollView和WebView,那么ScrollView将负责所有的滚动,我会非常感激。