1

我有一个正在运行的项目,现在它几乎完成了,但现在我在应用程序委托类中有一个方法,我希望应该在项目中的所有按钮上调用这个方法。一种简单的方法是我应该在每个按钮侦听器代码中添加对方法的调用。但是有没有一种方法可以让它与按钮动作“内部修饰”连接起来

4

3 回答 3

4

通过继承 UIButton 类来覆盖 sendActionsForControlEvents。

- (void)sendActionsForControlEvents:(UIControlEvents)controlEvents {
   if(controlEvents == UIControlEventTouchUpInside) {
      //call your method.  
   }
   [super sendActionsForControlEvents:controlEvents];
}

您可能必须遍历所有 UIButton 并将其类更改为您的子类。我还没有尝试过,但我认为你可以试一试。

于 2013-02-20T12:25:32.197 回答
1

您可以为此使用扩展名

extension UIButton
{
    override open func sendActions(for controlEvents:UIControlEvents) 
    {
        if controlEvents == .touchUpInside
        {
           // Type your custom execution here
        }
    }
}

这将为按钮上的每个事件调用

于 2017-06-23T07:48:11.633 回答
0

迅速 5

extension UIButton {
     open override func sendAction(_ action: Selector, to target: Any?, for event: UIEvent?) {
        //your code
        super.sendAction(action, to: target, for: event)
    }  
}

我发现这是为每个按钮单击实现通用操作的最简单方法。这比对应用程序中的每个按钮进行子类化要简单得多。

于 2021-05-29T15:58:47.830 回答