用户将游戏块(第i个图像视图)拖动到其目标位置。程序计数,看到所有项目都在正确的位置,宣布“游戏结束”并将userInteractionEnabled
设置为NO。
很好,除非用户的手指仍然在游戏块上,用户可以意外地将棋子拖回目标区域。 “游戏结束”正在显示,但该作品不再在正确的位置。
是否有办法强制使用touchesEnded(未检测到touchesEnded),以便在作品位于其最终目的地时(有效地)破坏与游戏块的接触(即使用户不会意外拉动它)不合适的位置)?
userInteractionEnabled = NO
似乎在触摸释放后才会生效。
答案 0 :(得分:0)
我不知道强迫touchesEnded的方法。
显然,处理此问题的一种方法是让您的应用程序保持状态,指示游戏结束并防止在该状态下移动任何游戏碎片。
你可以试试beginIgnoringInteractionEvents,不过我怀疑这会做你想要的。我真的认为在你的应用程序中管理状态可以确保你做正确的事情,而不是在达到最终状态后移动部件,这是要走的路。
来自Apple的iOS事件处理指南:
关闭一段时间的触摸事件传递。应用程序可以 调用UIApplication方法beginIgnoringInteractionEvents和更高版本 调用endIgnoringInteractionEvents方法。第一种方法停止 完全接收触摸事件的应用程序;第二 调用方法以恢复接收此类事件。你有时候 想要在代码执行时关闭事件传递 动画。
答案 1 :(得分:0)
我想在自己的应用程序中执行非常类似的操作后发现了这个问题。我希望在单击移动操作后立即运行touchDown
方法(如- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
...
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self touchesEnded:touches withEvent:event];
});
}
操作方法),但不知道如何实现此操作。最后,这就是我所做的工作! :
file_put_contents
这完美无缺!