用户将游戏片段(第i图像视图)拖动到其目标位置。程序计数,看到所有的物品都放在正确的位置,宣布“游戏结束”,并将userInteractionEnabled设置为NO。
很好,除了如果用户的手指仍然按在游戏棋子上,用户可以意外地将棋子拖回目标区域。“游戏结束”正在播放,但棋子不再放在正确的位置。
有没有办法强制touchesEnded (而不是检测到touchesEnded),以便在棋子到达其最终目的地时(有效地)断开与游戏棋子的接触(即,这样用户就不会意外地将其拉出位置)?
在释放触摸之前,userInteractionEnabled = NO似乎不会生效。
发布于 2011-11-09 12:24:19
我不知道有什么方法可以强迫touchesEnded。
显然,处理此问题的一种方法是让您的应用程序维护指示游戏已结束的状态,并在处于该状态时防止移动任何游戏棋子。
你可以试试beginIgnoringInteractionEvents,尽管我怀疑它是否能达到你想要的效果。我真的认为,在你的应用程序中管理状态,以确保你会做正确的事情,而不是在达到结束状态后移动部分,才是正确的方法。
来自苹果的iOS事件处理指南:
在一段时间内关闭触摸事件的传送。应用程序可以调用UIApplication方法beginIgnoringInteractionEvents,然后再调用endIgnoringInteractionEvents方法。第一个方法完全停止应用程序接收触摸事件;第二个方法被调用以恢复对这些事件的接收。有时,您希望在代码执行动画时关闭事件传递。
发布于 2015-06-16 15:33:50
在我想在自己的应用程序中做一个非常类似的操作后,我发现了这个问题。我希望在单击移动操作(就像touchDown操作方法)之后立即运行touchesEnded:方法,但不知道如何实现这一点。最后,这就是我所做的,它起作用了!
- (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];
});
}它完美地工作了!
https://stackoverflow.com/questions/8060119
复制相似问题