Как программно подделать сенсорное событие в Uibutton?

StackOverflow https://stackoverflow.com/questions/4028734

Вопрос

Я пишу несколько модульных тестов и из-за природы этого конкретного приложения, важно, чтобы я вырос на UI цепь как можно больше. Итак, что я хотел бы сделать, это программно запустить кнопку нажать, как если бы пользователь нажал кнопку в GUI.

(Да, да - я мог Просто позвоните IBAction селектор, но, опять же, природа этого конкретного приложения делает важно, чтобы я подделал фактическую кнопку прессу, такой, что IBAction быть вызванным от кнопки, сама.)

Что является предпочтительным методом этого?

Это было полезно?

Решение

Оказывается, что

[buttonObj sendActionsForControlEvents: UIControlEventTouchUpInside];

Получил меня именно то, что мне нужно, в этом случае.

РЕДАКТИРОВАТЬ: Не забудьте сделать это в главной ните, чтобы получить результаты, похожие на пользователь-пресс.


Для Swift 3:

buttonObj.sendActions(for: .touchUpInside)

Другие советы

Обновление к этому ответу на SWIFT

buttonObj.sendActionsForControlEvents(.TouchUpInside)

РЕДАКТИРОВАТЬ: Обновлено для Swift 3

buttonObj.sendActions(for: .touchUpInside)

Если вы хотите сделать этот вид тестирования, вы будете любить поддержку автоматизации пользовательского интерфейса в iOS 4. Вы можете написать JavaScript для симуляции кнопки нажима и т. Д. Докуровая справедливо, хотя документация (особенно часть начата) немного редкий

В таком случае, 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.

Swift 3:

self.btn.sendActions(for: .touchUpInside)

Для Xamarin iOS.

btnObj.SendActionForControlEvents(UIControlEvent.TouchUpInside);

Справка

Swift 4:

Я. YourButton (Self)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top