Xcode 如何强制触摸

Xcode 如何强制触摸,xcode,cocoa-touch,touches,Xcode,Cocoa Touch,Touches,用户将游戏块(第i个图像视图)拖动到其目标位置。程序计数,查看所有项目是否在正确的位置,宣布“游戏结束”,并将userInteractionEnabled设置为NO 很好,不过如果用户的手指仍在游戏棋子上,用户可能会意外地将棋子拖回目标区域。“游戏结束”正在播放,但该片段不再位于正确的位置 是否有一种方法可以强制触摸(而不是检测触摸),以便在游戏棋子到达其最终目的地时(有效地)断开与游戏棋子的接触(即,用户不会意外地将其拉出位置) userInteractionEnabled=NO在释放触摸之前

用户将游戏块(第i个图像视图)拖动到其目标位置。程序计数,查看所有项目是否在正确的位置,宣布“游戏结束”,并将
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];
 });
}
这工作做得很好