UIButton删除所有目标操作

我已经添加了多个target-action-forControlEvents:到一个UIButton。 我想一次性移除所有这些,而不会释放任何东西。 然后我会设定新的目标。

这是可能的,我该怎么办呢?

调用removeTarget:action:forControlEvents:,向目标传递nil,为动作传递NULL,并使用设置所有位的控制掩码(UIControlEventAllEvents)。

Objective-C的

[someControl removeTarget:nil action:NULL forControlEvents:UIControlEventAllEvents]; 

Swift 2

 button.removeTarget(nil, action: nil, forControlEvents: .AllEvents) 

Swift 3

 button.removeTarget(nil, action: nil, for: .allEvents) 

@程序员在Swift 2中的回答:

 button.removeTarget(nil, action: nil, forControlEvents: .AllEvents) 

和Swift 3:

 button.removeTarget(nil, action: nil, for: .allEvents) 

注意:Swift没有NULL ,所以我testing用nilreplace它,它似乎工作正常。

迅速:

 btnCancel.removeTarget(self, action: Selector(), forControlEvents: UIControlEvents.AllEvents) 
 - removeTarget:action:forControlEvents: 

此方法停止将事件传递到指定的目标对象。

  1. 在目标参数中指定一个有效的对象 ,此方法停止将指定的事件传递给与该对象关联的所有操作方法。

  2. 为目标参数指定nil ,这个方法可以防止这些事件传递给所有目标对象的所有操作方法

    Objective-C的:

     [_myButton removeTarget: //any validObject (or) nil action:nil forControlEvents:UIControlEventAllEvents]; 

    迅速:

     myButton.removeTarget(*validObject or nil*, action:nil, forControlEvents:UIControlEvents.AllEvents) 

欲了解更多详情https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/index.html#//apple_ref/occ/instm/UIControl/removeTarget:action:forControlEvents