我正在为iOS编写swift程序。我有一个节点,其中有几个子节点并排排列。
我有两个不同的函数可以改变这些节点的位置。
一个将左侧节点移动到右侧,另一个节点将所有节点移动到某个点(因为一个节点已被移除')
问题是这些调用是异步完成的。一个是完成渲染,另一个是在用户交互之后完成的。因此,当用户进行交互并且滑动节点中存在移动时,它们会相互干扰。
我的解决方案是将两个函数存储在一个数组中,然后在“更新”中调用它们。事件。每个功能锁定'节点,以便在完成之前不会调用另一个函数。
我的问题是,如何在Swift中存储和执行这些函数。
我有
var actionQueue:[(()->())]
在班上。
但是如何添加功能呢?
actionQueue.append(shiftNodesTowards(position: CGPoint))
我该如何执行?
if !positionLock && actionQueue.count > 0 {
var toDo = actionQueue.removeAtIndex(0)
}
谢谢!
答案 0 :(得分:0)
你不必像那样复杂的事情。只需锁定用户输入,直到使用beginIgnoringInteractionEvents
完成非交互式操作:
UIApplication.sharedApplication().beginIgnoringInteractionEvents()
//call after your method is done:
UIApplication.sharedApplication().endIgnoringInteractionEvents()