如何强制TouchesEnded

时间:2011-11-09 03:49:36

标签: xcode cocoa-touch touches

用户将游戏块(第i个图像视图)拖动到其目标位置。程序计数,看到所有项目都在正确的位置,宣布“游戏结束”并将userInteractionEnabled设置为NO。

很好,除非用户的手指仍然在游戏块上,用户可以意外地将棋子拖回目标区域。 “游戏结束”正在显示,但该作品不再在正确的位置。

是否有办法强制使用touchesEnded(未检测到touchesEnded),以便在作品位于其最终目的地时(有效地)破坏与游戏块的接触(即使用户不会意外拉动它)不合适的位置)?

userInteractionEnabled = NO似乎在触摸释放后才会生效。

2 个答案:

答案 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

这完美无缺!