我正在使用以下两个 UIScrollView 委托(delegate)方法来调用我的 UIViewController 中的另一个方法:
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
// do something
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
// do something
}
我已经尝试过各种不同的调用//do something 的方法,但要么两种方法都没有被调用,要么两种委托(delegate)方法都被调用,在某些情况下调用//do something 两次。例如:
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
if(![scrollView isDecelerating] && ![scrollView isDragging]){
//do something
}
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
if(!decelerate){
//do something
}
}
所以对于上面的内容,如果我滚动并让它慢到停止,它会调用 scrollViewDidEndDecelerating:,但是如果我滚动并通过点击停止它,它会同时调用 scrollViewDidEndDragging: 和 scrollViewDidEndDecelerating:
我希望它调用一个或另一个...我可以使用 scrollViewDidEndDecelerating: 和 scrollView 对象来停止这个双重方法调用吗?
最佳答案
ScrollView 委托(delegate)完成它的工作。你无法阻止它的发生。但是通过简单的逻辑,您可以实现您想要做的事情。
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
dragged = YES;
// do something
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
if (!dragged) {
// do something
}
dragged = NO;
}
关于iphone - UIScrollView 委托(delegate)方法冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6909471/