gpt4 book ai didi

ios - 在 iOS 中切换 userInteractionEnabled 属性时遇到问题

转载 作者:行者123 更新时间:2023-11-28 17:47:04 24 4
gpt4 key购买 nike

我正在为 iOS 开发一个井字游戏,我正在使用 UIButtons 和 UIImageViews 的组合来允许用户交互并显示所做的 Action 。我的问题是按钮在 CPU 移动之前继续接受用户输入,这打破了我的游戏逻辑。我已多次尝试切换 userInteractionEnabled 属性,但只能将其关闭。在游戏中启动所有内容的引擎是我的 buttonPressed 方法。我还在这个方法中切换了 userInteractionEnabled 属性,这就是我的问题:如何在禁用用户交互后重新启用该属性?是否有一种在我可以覆盖的事件之间调用的方法?

我在网上搜索过,也搜索过 Apple 提供的开发人员文档,找到了有关 touchesBegan 和 touchesEnded 方法的信息。然而,据我所知,这些方法需要被显式调用,这让我回到了我最初的问题,即在没有用户交互的情况下无法调用这些函数。

如果有人能提供帮助,我将不胜感激!在过去的几周里,我一直在绞尽脑汁思考这个问题,但我只是没有看到解决方案。

最佳答案

我认为对于像井字游戏这样的游戏,计算反击应该非常快,以至于可以在第一次按下按钮时立即完成。如果您正在做一些复杂的事情来计算下一步行动,例如启动线程,您可能需要重新考虑。

不过,假设您的游戏类似于国际象棋或围棋,想出反击可能需要更长的时间。你的 View Controller 应该有一个为当前玩家移动的方法,我们称之为 -makeMove:。您的 -buttonPressed 操作应该调用该方法来为用户移动。作为响应,-makeMove: 应该更新游戏状态,将当前玩家切换到下一个玩家。如果新的当前玩家是计算机,则它应该禁用控件并开始计算下一步的过程。让我们想象这是通过调用一些 NSOperation 来完成的,因此下一步行动是一个异步任务。一旦操作提出移动,它应该再次调用 -makeMove:(通过调用 -performSelectorOnMainThread:),这将再次更新游戏状态和当前玩家。不过这一次,它应该看到新的当前播放器不是计算机,因此它应该重新启用控件。

关于ios - 在 iOS 中切换 userInteractionEnabled 属性时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5220418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com