iphone - UIScrollView 委托(delegate)方法冲突

标签 iphone objective-c ios uiscrollview uiscrollviewdelegate

我正在使用以下两个 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/

相关文章:

iPhone应用程序被苹果拒绝,称使用了分析

iphone - 将 SQLite 中的数据保存为 BLOB 是一种良好的编程习惯吗?

iphone - 在 Objective-C 中生成具有随机数长度的随机数

iphone - 适用于 Iphone 应用程序的 OCR

ios - UITableView 不显示在模拟器中

objective-c - 我们能知道Xode项目中NSBundle的内容吗?

ios - 单击时如何将选项卡栏项目分配给特定的 View Controller ?

iOS XMPP 无法发送消息

iphone - 更改 EntryElement 键盘 returnkeytype monotouch.dialog

objective-c - 无法构建 Objective-C 模块 'ContactsUI'