나는 몇 가지 단위 테스트를 작성하고 있으며이 특정 응용 프로그램의 특성으로 인해 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
입니다.
답변
답변
스위프트 4 :
self .yourButton (self)