很多按钮添加相同的addTarget(_:action:for :)方法

时间:2017-10-08 09:57:40

标签: ios swift viewcontroller

我正在使用计算应用。 并且有大量按钮,我存储在一个大堆栈视图(在SB中创建,没有插座)。 每个按钮投射一些阴影(也在SB属性中设置)。 我想在按下按钮时摆脱阴影。 tapGestureRecognizer或目标动作只能影响一个UIButton。 任何方便的实现方式

PS我的意思是当按钮.touchupinside或tapGestureRecognizer .end .start当手指移动按钮仍然应该投下阴影

帮助赞赏

3 个答案:

答案 0 :(得分:3)

UIButton将在点击时突出显示,因此检查按钮设置将高亮状态配置中的标题颜色更改为与默认状态相同或者您可以设置:

[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];

如果你想通过代码控制突出显示,你可以禁用子类Button突出显示的普通,并在touchesBegin中禁用:

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    if (self.state == UIControlStateHighlighted) {
        [self setHighlighted:NO];
    }
}

答案 1 :(得分:0)

您可以将相同的IBAction分配给多个按钮,以便为所有按钮调用相同的方法

func buttonDidTouch(sender:UIButton) {}

如果现在要识别正在调用的按钮,可以使用UIButton.tag属性来识别它。可以在SB中为每个按钮设置标签。

答案 2 :(得分:0)

有很多方法可以实现这个目标,但我会在下面进行。

请给出我的逻辑。 取一个UIButton

的临时可选变量

实施例

var myTemButton: UIButton()?

按钮操作方法

@IBAction func myButtonActionFunc(_ sender: UIButton) {
  if myTemButton == nil {
    myTemButton = sender 
  }
  else {
    // Use "myTemButton" and write here code for remove shadow Or other stuff that you want.
  }

  // use "sender" and write code here for apply shadow of button or other stuff that you want.
}