[ios] UIButton은 모든 대상 동작 제거

UIButton에 여러 target-action-forControlEvents :를 추가했습니다. 아무것도 할당 해제하지 않고 한 번에 이들을 모두 제거하고 싶습니다. 그런 다음 새로운 목표를 설정합니다.

이것이 가능하며 어떻게해야합니까?



답변

removeTarget : action : forControlEvents :를 호출 하고 대상에 nil을 전달하고 조치에 NULL을 전달한 다음 모든 비트 (UIControlEventAllEvents)를 설정하는 제어 마스크를 사용하십시오.

목표 -C

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

스위프트 2

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

스위프트 3

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


답변

스위프트 2의 @progrmr의 답변 :

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

스위프트 3 :

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

참고 : Swift에는을 갖지 NULL않으므로로 대체 테스트 nil했으며 제대로 작동하는 것 같습니다.


답변

빠른:

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


답변

스위프트 2 :

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

스위프트 3 & 4 :

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

목표 -C :

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

도움이 되길 바랍니다.


답변

- 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 :


답변