Estou escrevendo alguns testes de unidade e, devido à natureza desse aplicativo em particular, é importante que eu suba no nível UI
possível cadeia. Então, o que eu gostaria de fazer é acionar programaticamente um pressionamento de botão, como se o usuário tivesse pressionado o botão no GUI
.
(Sim, sim - eu poderia simplesmente chamar oIBAction
seletor, mas, novamente, a natureza desse aplicativo em particular torna importante que eu falsifique o pressionamento real do botão, de modo que IBAction
seja chamado pelo próprio botão.)
Qual é o método preferido para fazer isso?
ios
iphone
uibutton
touch-event
Olie
fonte
fonte
Respostas:
Acontece que
me deu exatamente o que eu precisava, neste caso.
EDIT: Não se esqueça de fazer isso no thread principal, para obter resultados semelhantes aos da imprensa do usuário.
Para o Swift 3:
buttonObj.sendActions(for: .touchUpInside)
fonte
[myController myActionMethod:myButton1];
myActionMethod:
não for pública e, portanto, você não pode chamá-lo diretamente.Uma atualização para esta resposta para Swift
EDIT : Atualizado para Swift 3
fonte
Se você deseja fazer esse tipo de teste, adorará o suporte à UI Automation no iOS 4. Você pode escrever JavaScript para simular pressionamentos de botão, etc. com bastante facilidade, embora a documentação (especialmente a parte de introdução) seja um pouco escasso.
fonte
Swift 3:
fonte
Nesse caso,
UIButton
é derivado deUIControl
. Isso funciona para o objeto derivado deUIControl
.Queria reutilizar "
UIBarButtonItem
" ações em casos de uso específicos. Aqui,UIBarButtonItem
não oferece métodosendActionsForControlEvents:
Mas, felizmente,
UIBarButtonItem
possui propriedades para destino e ação.Aqui,
rightBarButtonItem
é do tipoUIBarButtonItem
.fonte
Para Xamarin iOS
Referência
fonte
Swift 4:
self .yourButton (self)
fonte