我正在检测用户何时摇动手机。是否可以执行2个独立的动作?我的意思是先执行此操作1,然后再执行此操作2。
function getAppID(item, index) { return item.appid; }
g_rgWishlistData.map(getAppID).join(",");
当我这样做的时候,只有第二个被执行
答案 0 :(得分:0)
与其处理硬编码的延迟,不如将动画包装在CATransaction
中,并在其完成处理程序中运行第二步:
override func motionBegan(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
if motion == .motionShake {
CATransaction.begin()
let scene = makeScene()
animationView.frame.size = scene.size
animationView.presentScene(scene)
CATransaction.setCompletionBlock {
let scene2 = self.makeScene2()
self.animationView.frame.size = scene2.size
self.animationView.presentScene(scene2)
}
CATransaction.commit()
}
}
答案 1 :(得分:-1)
通过在操作之间添加延迟来解决该问题。
override func motionBegan(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
if motion == .motionShake {
let scene = makeScene()
animationView.frame.size = scene.size
animationView.presentScene(scene)
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(4), execute: {
let scene2 = self.makeScene2()
self.animationView.frame.size = scene2.size
self.animationView.presentScene(scene2)
})
}
}
}