UIButton은 모든 대상 동작 제거


341

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

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

답변:


824

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)

4
팁 고마워! 다음은 제가 생각하는 전체 링크입니다 (예 : 섹션) : " developer.apple.com/iphone/library/documentation/uikit/… :"
SK9

1
progrmr의 제안은 물론 작동합니다. 여기에 답을 추가하기 위해 필요한 코드 조각이 있습니다 : [button removeTarget : nil action : NULL forControlEvents : UIControlEventTouchUpInside];
SK9

6
따로 : -allTargets 인스턴스 메소드는 모든 인스턴스 대상의 NSSet을 리턴합니다 (없는 경우에는 nil).
SK9

3
완전한! 내가 찾던 정확히 : D
Totumus Maximus

1
언어가 다른 정확히 동일한 답변으로 경쟁 답변이 있으므로 Swift 2 및 3으로 업데이트되었습니다.
Peter DeWeese

92

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

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

스위프트 3 :

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

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


5
Swift 3의 경우 : ".AllEvents"는 이제 ".allEvents"입니다 (소문자 'a') :removeTarget(nil, action: nil, for: .allEvents)
Sasho

당신의 참고에 관한 : 사실, 난 당신이 중 하나를 통과 할 수 있으리라 생각 nilNULL모두 너무 오브젝티브 C의 제 1 및 제 2 인자, 그것은 작동합니다. 나는 둘 다 (void*) 0(또는 최소한 동등한 것으로 평가) 정의된다고 생각합니다 .
Nicolas Miari 5

@Sasho Swift 3 :-)로 업그레이드 할 때 (새로운 방법 / 인수 명명 규칙으로 인해) 소스 파일 크기가 평균적으로 줄어드는 정도에 대한 통계를보고 싶습니다.
Nicolas Miari

이것은 다른 언어로 된 동일한 대답 이며이 질문에 언어가 태그되어 있지 않으므로 @progrmr의 답변을 편집해야합니다.
Peter DeWeese

6

빠른:

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

어떤 언어를 사용하고 있는지 표시하십시오
Juan Boero

@JuanPabloBoero, 그것은 빠르다
Iya

3

스위프트 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];

도움이 되길 바랍니다.


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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.