我有两个视图在委托中有一个事件处理程序,可以在任何交互发生时调用它。在每个事件中,我都喜欢它,所以它在另一个视图上执行交互。这里的问题是我在事件处理程序上遇到无限循环的来回调用,即当一个人在另一个上进行交互时,它会触发其事件处理程序,依此类推。有办法解决这个问题吗?
这是委托方法。 view1和view2是两个视图。 Position是一个用于更新每个视图位置的自定义类。
-(void) viewDelegate: (UIView*) dView didChangePosition: (Position*) newPosition {
if( dView == view1 ){
[view2 moveToPosition: newPosition];
}else{
[view1 moveToPosition: newPosition];
}
}
答案 0 :(得分:0)
在viewDelegate:didChangePosition:
开始时,您可以将view1
和/或view2
的代理保存到本地变量,然后nil
将实际的委托属性保存。然后,您可以随意调用moveToPosition:
或任何其他可生成委托回调的代码。在方法结束时,只需将代理恢复为先前保存的值。