[ios] 프로그래밍 방식으로 터치 이벤트를 UIButton에 가짜로 만드는 방법은 무엇입니까?

나는 몇 가지 단위 테스트를 작성하고 있으며이 특정 응용 프로그램의 특성으로 인해 UI체인을 최대한 높이 올리는 것이 중요 합니다. 그래서 내가하고 싶은 것은 사용자가 버튼을 누른 것처럼 프로그래밍 방식으로 버튼 누름을 트리거하는 것 GUI입니다.

(예, 예 . 셀렉터를 호출 할 수IBAction있지만이 특정 응용 프로그램의 특성상 실제 버튼 누름을 가짜 IBAction로 지정하여 버튼 자체에서 호출되도록하는 것이 중요 합니다.)

이 작업을 수행하는 데 선호되는 방법은 무엇입니까?



답변

그것은 밝혀졌다

[buttonObj sendActionsForControlEvents: UIControlEventTouchUpInside];

이 경우에 내가 필요한 것을 정확히 얻었습니다.

편집 : 사용자 프레스와 비슷한 결과를 얻으려면 주 스레드 에서이 작업을 수행하는 것을 잊지 마십시오.


스위프트 3의 경우 :

buttonObj.sendActions(for: .touchUpInside)


답변

Swift에 대한이 답변의 업데이트

buttonObj.sendActionsForControlEvents(.TouchUpInside)

편집 : 스위프트 3 업데이트

buttonObj.sendActions(for: .touchUpInside)


답변

이런 종류의 테스트를 원한다면 iOS 4의 UI 자동화 지원을 좋아할 것입니다. 문서 (특히 시작하기 부분)가 약간 있지만 JavaScript를 작성하여 버튼 누름 등을 상당히 쉽게 시뮬레이션 할 수 있습니다 부족한.


답변

스위프트 3 :

self.btn.sendActions(for: .touchUpInside)


답변

이 경우에서 UIButton파생됩니다 UIControl. 이것은에서 파생 된 객체에 적용됩니다 UIControl.

UIBarButtonItem특정 사용 사례에서 ” “작업 을 재사용하고 싶었습니다 . 여기에 UIBarButtonItem방법을 제공하지 않습니다sendActionsForControlEvents:

그러나 다행히도 UIBarButtonItem대상 및 동작에 대한 속성이 있습니다.

 if(notHappy){
         SEL exit = self.navigationItem.rightBarButtonItem.action;
         id  world = self.navigationItem.rightBarButtonItem.target;
         [world performSelector:exit];
 }

여기는 rightBarButtonItem유형 UIBarButtonItem입니다.


답변

Xamarin iOS의 경우

btnObj.SendActionForControlEvents(UIControlEvent.TouchUpInside);

참고


답변

스위프트 4 :

self .yourButton (self)