Я добавил несколько target-action-forControlEvents: для кнопки UIB. Я хотел бы удалить все это за один раз, ничего не освобождая. Затем я установлю новые цели.
Возможно ли это и как мне это сделать?
Вызовите removeTarget: action: forControlEvents:, передайте nil для цели, NULL для действия и используйте маску управления, которая устанавливает все биты (UIControlEventAllEvents).
Objective-C
[someControl removeTarget:nil
action:NULL
forControlEvents:UIControlEventAllEvents];
Swift 2
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
Свифт 3
button.removeTarget(nil, action: nil, for: .allEvents)
Ответ @ progrmr в Swift 2:
и Свифт 3:
Примечание: Swift не имеет
NULL
, поэтому я протестировал замену его наnil
и он, кажется, работает нормально.источник
removeTarget(nil, action: nil, for: .allEvents)
nil
илиNULL
к обеим первым и вторым аргументам в Objective-C тоже, и он будет работать. Я считаю, что оба определены как(void*) 0
(или, по крайней мере, оценивать как равные).Swift:
источник
Свифт 2:
Свифт 3 и 4:
Objective-C:
Надеюсь, поможет.
источник
Этот метод останавливает доставку событий указанному целевому объекту.
Указывая действительный объект в целевом параметре, этот метод останавливает доставку указанных событий всем методам действия, связанным с этим объектом.
Указывая nil для целевого параметра, этот метод предотвращает доставку этих событий всем методам действия всех целевых объектов.
Objective-C:
скоро:
Для получения дополнительной информации https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/index.html#//apple_ref/occ/instm/UIControl/removeTarget:action:forControlEvents :
источник