无限循环事件处理程序对

时间:2013-07-10 23:33:25

标签: ios objective-c

我有两个视图在委托中有一个事件处理程序,可以在任何交互发生时调用它。在每个事件中,我都喜欢它,所以它在另一个视图上执行交互。这里的问题是我在事件处理程序上遇到无限循环的来回调用,即当一个人在另一个上进行交互时,它会触发其事件处理程序,依此类推。有办法解决这个问题吗?

这是委托方法。 view1和view2是两个视图。 Position是一个用于更新每个视图位置的自定义类。

-(void) viewDelegate: (UIView*) dView didChangePosition: (Position*) newPosition {
    if( dView == view1 ){
        [view2 moveToPosition: newPosition];
    }else{
        [view1 moveToPosition: newPosition];
    }
 } 

1 个答案:

答案 0 :(得分:0)

viewDelegate:didChangePosition:开始时,您可以将view1和/或view2的代理保存到本地变量,然后nil将实际的委托属性保存。然后,您可以随意调用moveToPosition:或任何其他可生成委托回调的代码。在方法结束时,只需将代理恢复为先前保存的值。