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: