UIButton удаляет все целевые действия

Я добавил несколько целевых действий для forControlEvents: в UIButton. Я бы хотел удалить все это за один раз, не снимая ничего. Затем я установил новые цели.

Возможно ли это и как мне это сделать?

Ответ 1

Вызвать removeTarget:action:forControlEvents:, передать нуль для цели, 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)

Ответ 2

@progrmr ответ в Swift 2:

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

и Swift 3:

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

Примечание: Swift не имеет NULL, поэтому я тестировал его замену на nil и, похоже, работает нормально.

Ответ 3

Swift:

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

Ответ 4

- removeTarget:action:forControlEvents:

Этот метод останавливает доставку событий указанному целевому объекту.

  • Указание действительного объекта в целевом параметре, этот метод останавливает доставку указанных событий ко всем методам действий, связанным с этим объектом.

  • Указание 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: