Xcode 如何强制触摸
用户将游戏块(第i个图像视图)拖动到其目标位置。程序计数,查看所有项目是否在正确的位置,宣布“游戏结束”,并将Xcode 如何强制触摸,xcode,cocoa-touch,touches,Xcode,Cocoa Touch,Touches,用户将游戏块(第i个图像视图)拖动到其目标位置。程序计数,查看所有项目是否在正确的位置,宣布“游戏结束”,并将userInteractionEnabled设置为NO 很好,不过如果用户的手指仍在游戏棋子上,用户可能会意外地将棋子拖回目标区域。“游戏结束”正在播放,但该片段不再位于正确的位置 是否有一种方法可以强制触摸(而不是检测触摸),以便在游戏棋子到达其最终目的地时(有效地)断开与游戏棋子的接触(即,用户不会意外地将其拉出位置) userInteractionEnabled=NO在释放触摸之前
userInteractionEnabled
设置为NO
很好,不过如果用户的手指仍在游戏棋子上,用户可能会意外地将棋子拖回目标区域。“游戏结束”正在播放,但该片段不再位于正确的位置
是否有一种方法可以强制触摸(而不是检测触摸),以便在游戏棋子到达其最终目的地时(有效地)断开与游戏棋子的接触(即,用户不会意外地将其拉出位置)
userInteractionEnabled=NO
在释放触摸之前似乎不会生效。我不知道强制触摸解除的方法
显然,处理这种情况的一种方法是让应用程序保持表示游戏结束的状态,并防止在该状态下移动任何游戏块
您可以尝试开始忽略InteractionEvents,尽管我怀疑这会满足您的需求。我真的认为,管理应用程序中的状态以确保您将做正确的事情,而不是在达到最终状态后移动工件,这是一种可行的方法
来自苹果iOS事件处理指南:
在一段时间内关闭触摸事件的传递。应用程序可以
调用UIApplication方法beginIgnoringInteractionEvents及更高版本
调用endIgnoringInteractionEvents方法。第一种方法停止
应用程序完全不接收触摸事件;第二
方法以恢复接收此类事件。你有时候
要在代码执行时关闭事件传递吗
动画
在我想在自己的应用程序中执行类似的操作之后,我发现了这个问题。我希望在点击移动动作后立即运行
touchesend:
方法(就像touchedown
动作方法),但不知道如何实现这一点。最后,这就是我所做的,并且成功了!:
- (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];
});
}
这工作做得很好