如何在特定时间禁用特定touchEvent的某些UIButton操作

时间:2015-03-27 00:54:51

标签: ios swift

所以我的UI有很多UIButtons,我有一个"Action" Int,循环显示0-9。

我想在"Action"0时这样做,只会注册第一个UIButton的输入。一旦用户按下第一个UIButton我的代码已经将"Action" Int推进到1,此时我希望我的程序只注册来自第二UIButton ......等等。

我的UIButtons在数组中。到目前为止,我找到了UIButton.hiddenUIButton.enable,我可以根据"Action"

以编程方式切换

.hidden赢了工作,因为我希望按钮仍然可见。

.enable让它保持可见但是......这就是捕获。

每个按钮有4个不同的操作touchUpInside touchDragExit doubleTap:GestureRecognizerlongPress:GestureRecognizer以及func收集&UIButtons的& #34;滑动"平移时阵列并执行这些按钮'潘完成后touchDragExit

我希望longPress:GestureRecognizer永远不会变为非活动状态。

我希望Pan func仍然能够收集数组中的按钮,只要第一个按钮是== "Action"

有关其他方法的任何建议,或者我如何为特定touchEvents制作.enable工作?

1 个答案:

答案 0 :(得分:0)

如果您希望某些手势继续有效,我建议您不要启用和禁用。

我最初的想法是在创建数组时为每个按钮设置一个标记,然后检查手势处理程序中的当前操作值。

也许您可能需要pan集合的状态变量来检查它是否在其他按钮拾取时成功启动,具体取决于您的实现。

var buttonArray = [UIButton]()
var buttonCount = 10
var action = 0

func viewDidLoad {
   for var i = 0; i < buttonCount; ++i {
      var button = UIButton()
      button.tag = i

      button.setTarget(self, action:"didTap:", forControlEvent:.TouchUpInside)
      // Other actions
      button.setTarget(self, action:"didLongPress:", forControlEvent.LongPress)

      buttonArray.append(button)
   }
}

func didTap(sender:UIButton) {
   if action >= sender.tag {
      // Handle action
   }
}

// Other action handlers

func didLongPress(sender:UIButton) {
   // Always handle action
}