UIView没有在UIScrollView委托中触发方法

时间:2011-01-30 21:15:56

标签: iphone ios uiviewcontroller uiscrollview uiscrollviewdelegate

我想知道是否有人可以解释为什么UIScrollView委托中的任何方法都没有被解雇。

设置场景。我有一个UIViewController,它被推入堆栈。在这个视图中,我有5个自定义选项卡。在点击每个点击时,我有一个带有5个视图(每个标签一个)的函数来自UIViewController / xib组合。

ExercisePhotoView *exercisePhotoView = [[ExercisePhotoView alloc] initWithNibName:@"ExercisePhotoView" bundle:nil];
exercisePhotoView.exercise = self.exercise;
[self.photoView addSubview:exercisePhotoView.view];
[exercisePhotoView release];

在其中一个被加载的视图中,我有一个带有一些图像的滚动视图(上面的代码块是所述视图)。 self.exercise 是一个NSManagedObject。图像被精确地加载到滚动视图控制器中并且分页工作。然而,什么不起作用是任何ScrollView的委托方法,如

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)theScrollView

我在头文件中包含了对委托的引用,如此。

@interface ExercisePhotoView : UIViewController <UIScrollViewDelegate> {
    IBOutlet UIScrollView   *scrollView;
    IBOutlet UIPageControl  *pageControl;

    Exercise                *exercise;
    NSMutableArray          *exerciseImageList; 
}

是否有我遗失或做错的事情。我无法在 ExercisePhotoView 类上触发任何委托方法。

提前谢谢。

4 个答案:

答案 0 :(得分:2)

您必须将self.scrollView.delegate设置为应作为scrollView委托的对象。

答案 1 :(得分:1)

虽然您已声明ExercisePhotoView实现了UIScrollViewDelegate协议,但您尚未告知它是UIScrollView的任何实例,它是它的委托。

因此,在ExercisePhotoView的viewDidLoad(或其他适当的方法)中,您需要声明ExercisePhotoView是特定scrollView实例的委托:

scrollView.delegate = self;

答案 2 :(得分:0)

请务必在标题中添加@property (nonatomic, retain) UIScrollView *scrollView;,在 .m

中添加@synthesize scrollView;

答案 3 :(得分:0)

您必须告诉滚动它的委托是谁,以便我知道将委托通知发送给谁。