2010-07-27 2 views
295

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

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

ответ

719

Позвоните 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) 
+4

Спасибо за подсказку! Вот полная ссылка, которую я думаю (например, в раздел): «http://developer.apple.com/iphone/library/documentation/uikit/reference/UIControl_Class/Reference/Reference.html#//apple_ref/occ/instm/UIControl/removeTarget: действие: forControlEvents: « – SK9

+1

progrmr предлагает предложения, конечно же.Чтобы добавить к этому ответу, это фрагмент кода, который мне нужен: [button removeTarget: nil Действие: NULL forControlEvents: UIControlEventTouchUpInside]; – SK9

+6

Кроме того: метод экземпляра -allTargets возвращает NSSet всех целевых объектов экземпляра (nil if none). – SK9

91

@ ответ progrmr в Swift 2:

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

и Swift 3:

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

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

+5

Для Swift 3: «.AllEvents» теперь «. AllEvents» (с нижним регистром «a»): 'removeTarget (nil, action: nil, для: .allEvents)' – Sasho

+0

Что касается вашего ПРИМЕЧАНИЕ: На самом деле, я считаю, может передавать либо «nil», либо «NULL» в ** оба ** первый и второй аргументы в Objective-C, и он будет работать. Я считаю, что оба они определены как '(void *) 0' (или, по крайней мере, оцениваются как равные). –

+0

@Sasho Мне бы очень хотелось увидеть некоторые статистические данные о том, как размер исходных файлов уменьшается (в среднем) при обновлении до Swift 3 :-) (из-за новых правил именования методов/аргументов). –

6

Swift:

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

укажите, на каком языке вы занимаетесь: –

+0

@ JuanPabloBoero, это быстро – Iya

2
- removeTarget:action:forControlEvents: 

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

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

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

    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:

Смежные вопросы