首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制TouchesEnded

如何强制TouchesEnded
EN

Stack Overflow用户
提问于 2011-11-09 11:49:36
回答 2查看 1.2K关注 0票数 0

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

很好,除了如果用户的手指仍然按在游戏棋子上,用户可以意外地将棋子拖回目标区域。“游戏结束”正在播放,但棋子不再放在正确的位置。

有没有办法强制touchesEnded (而不是检测到touchesEnded),以便在棋子到达其最终目的地时(有效地)断开与游戏棋子的接触(即,这样用户就不会意外地将其拉出位置)?

在释放触摸之前,userInteractionEnabled = NO似乎不会生效。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-09 12:24:19

我不知道有什么方法可以强迫touchesEnded。

显然,处理此问题的一种方法是让您的应用程序维护指示游戏已结束的状态,并在处于该状态时防止移动任何游戏棋子。

你可以试试beginIgnoringInteractionEvents,尽管我怀疑它是否能达到你想要的效果。我真的认为,在你的应用程序中管理状态,以确保你会做正确的事情,而不是在达到结束状态后移动部分,才是正确的方法。

来自苹果的iOS事件处理指南:

在一段时间内关闭触摸事件的传送。应用程序可以调用UIApplication方法beginIgnoringInteractionEvents,然后再调用endIgnoringInteractionEvents方法。第一个方法完全停止应用程序接收触摸事件;第二个方法被调用以恢复对这些事件的接收。有时,您希望在代码执行动画时关闭事件传递。

票数 0
EN

Stack Overflow用户

发布于 2015-06-16 15:33:50

在我想在自己的应用程序中做一个非常类似的操作后,我发现了这个问题。我希望在单击移动操作(就像touchDown操作方法)之后立即运行touchesEnded:方法,但不知道如何实现这一点。最后,这就是我所做的,它起作用了!

代码语言:javascript
复制
- (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];
 });
}

它完美地工作了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8060119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档