我有一个带有UIScrollView的View,带有一些文本(通过JSON加载)。我需要检测用户何时到达滚动结束(我在这里看到了其他问题)但问题是,我已经完成了.h工具UIScrollViewDelegate,我有
@property (retain, nonatomic) IBOutlet UIScrollView *scroll;
在我的.h文件中,并在.m文件中合成它。我在viewDidLoad中有这个:
self.scroll=[[UIScrollView alloc]init];
self.scroll.delegate=self;
在Interface Builder中进行连接(IBOutlet使用UIScrollView“滚动”,依此类推)。
之后,我通过调用JSON来完成UITextView,并执行与scrollView无关的其他内容。然后,我实现了方法scrollViewDidScroll。但是,它永远不会被称为。滚动工作正常,让我上下来看整个文本。但是,任何想法为什么不调用协议的方法?
谢谢。
答案 0 :(得分:4)
您无需分配和初始化新的UIScrollView
实例。当你从IB链接它时,它已经完成。这样你就破坏了链接。
顺便说一句,您的scroll
属性定义为retain
,所以
self.scroll = [[UIScrollView alloc]init];
是内存泄漏。
答案 1 :(得分:1)
您的UIViewController
是否符合UISrollViewDelegate
的要求?协议here。
请记住以下内容:
UIScrollViewDelegate协议声明的方法允许 采用委托来响应来自UIScrollView类的消息 因此,对滚动等操作作出反应,并在某种程度上影响 缩放,缩放滚动内容和滚动动画。
没有强制方法,但您需要采用该协议才能使用这些方法。
答案 2 :(得分:0)
那就是......如果你想调用scrollViewDidScroll方法,我必须以编程方式设置contentSize(尽管滚动很好)。
太棒了...... x(