我已成功使用它来跟踪顶部UIScrollVIEw的位置:
- (voID)scrollVIEwDIDScroll:(UIScrollVIEw *)scrollVIEw1 {int position = (scrollVIEw1.contentOffset.x); if (position == 0) { NSLog(@"Play A"); } else if (position == 280) { NSLog(@"Play B"); }//etc.}
我想跟踪底部UIScrollVIEw的位置.
当我尝试使用它时:
- (voID)scrollVIEwDIDScroll:(UIScrollVIEw *)scrollVIEw2 {int position2 = (scrollVIEw2.contentOffset.x);if (position2 == 0) {NSLog(@"Play A2"); }else if (position == 280) {NSLog(@"Play B2"); }//etc.}
我收到一条错误,上面写着“重新定义FirstVIEwConroller scrollVIEwDIDScroll”.
因此,我决定坚持下去,我尝试了一个相当Hackish的解决方案,并尝试使用它:
- (voID)scrollVIEwDIDEndDecelerating:(UIScrollVIEw *)scrollVIEw2{int position2 = (scrollVIEw2.contentOffset.x);if (position2 == 0) {NSLog(@"Play A2"); }else if (position2 == 280) {NSLog(@"Play B2"); }//etc.}
这个问题是当我移动任何一个UIScrollVIEws时它会触发这两个方法.例如 – 如果我将底部UIScrollVIEw 280像素(一个图像)向右移动,我在控制台中获得的输出是:
更多播放
PlayB2
如果我向右移动顶部UIScrollVIEw三个图像,我得到的输出是:
PlayC
PlayC2
这对我没有任何意义.
我想我可能会碰到我对代表工作方式的不完全理解.在vIEwDIDLoad方法中,我设置了两个:
scrollVIEw1.delegate = self;scrollVIEw2.delegate = self;
也许这是问题的一部分?也许我通过声明两个scrollVIEws具有相同的委托来引起麻烦?只是不确定.
我还尝试将所有条件语句组合到一个方法中 – 但我只想跟踪底部UIScrollVIEw移动时的位置以及移动时顶部UIScrollVIEw的位置,并将逻辑全部放在一个方法中报告两个位置,当任何一个移动,这不是我正在寻找的.
任何帮助表示赞赏.很想解决这个特殊的问题,但也非常想了解我接近这个问题的任何更大的问题.还是新的.一直在想我已经掌握了它,然后我遇到了一些让我陷入困境的东西……
解决方法 这正是UIScrollVIEw参数的用途.在IB中创建与scrollVIEw1和scrollVIEw2的连接,然后执行以下 *** 作:- (voID)scrollVIEwDIDScroll:(UIScrollVIEw *)scrollVIEw { if (scrollVIEw1 == scrollVIEw) { // Do stuff with scrollVIEw1 } else if (scrollVIEw2 == scrollVIEw) { // Do stuff with scrollVIEw2 }}总结
以上是内存溢出为你收集整理的cocoa – 使用带有多个UIScrollViews的scrollViewDidScroll全部内容,希望文章能够帮你解决cocoa – 使用带有多个UIScrollViews的scrollViewDidScroll所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)