【问题标题】:Waiting for user to press a button in Swift 2等待用户在 Swift 2 中按下按钮
【发布时间】:2017-01-13 04:00:48
【问题描述】:

在我的 Swift 代码中的一个函数中,我需要等到用户按下按钮。否则,我什么也不做。我该怎么做呢?也许按钮按下会触发一些我可以捕捉到的事件。

附:由于我的代码结构,按此按钮(如@IBAction)执行我想要的操作不是一个选项!

【问题讨论】:

  • 按钮按下确实会触发一些事件;与他们的 toucUpInside 事件关联的 @IBAction 方法。更清楚地解释您要达到的目标以及您认为不能使用操作方法的原因。
  • 看。我希望我的主游戏函数(当我按下“开始游戏”按钮时调用)循环调用 2 个函数,除非游戏结束条件为真。一个功能是轮到计算机,另一个是轮到用户。我希望用户的转向功能等到用户按下四个按钮之一,然后我可以根据他按下的按钮执行一些操作
  • 你说我可以检查oneButton.touchInside == true或类似的东西?
  • 没有。编写移动应用程序以响应用户操作。在您的 ibaction 中,您执行您的用户转码。完成后,您执行计算机转向功能,然后您什么也不做。当用户再次与按钮交互时,您将运行下一个回合,依此类推

标签: ios uibutton ibaction


【解决方案1】:

我可能为时已晚,但就个人而言,有两种方法可以实现这一目标。

  1. 添加观察者
  2. 使用委托模式,因此每当用户点击按钮时,您都会通知您的委托

【讨论】:

    【解决方案2】:

    您可以在主UIView(通常是UIViewController 视图)的默认情况下将用户交互设置为false

    self.view.userInteractionEnabled = false
    

    当您有按钮操作时,您将用户交互设置为true

    self.view.userInteractionEnabled = true
    

    【讨论】:

      【解决方案3】:

      声明一个全局布尔值,例如var buttonPressed = false,然后在按钮的 IBAction 中(当您单击它时):

      if buttonPressed = false{
             buttonPressed = true
      }
      

      并且在按下按钮时要调用的方法中,只需询问 buttonPressed 是否为 true。 试试看,告诉我它是否有效

      【讨论】:

      • 这会有问题,因为我有的是回合制游戏,我有 4 个按钮。我想获取用户输入(数字 1、2、3 或 4)并根据用户按下的按钮执行操作。我有一个主程序(游戏) - 它检查游戏结束条件,如果它的错误使计算机转动,然后必须等到用户按下四个按钮之一
      猜你喜欢
      • 1970-01-01
      • 2013-08-02
      • 2013-03-31
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多