Я пишу некоторые юнит-тесты, и, учитывая характер этого конкретного приложения, важно, чтобы я поднялся UI
как можно выше. Итак, что я хотел бы сделать, это программно вызвать нажатие кнопки, как если бы пользователь нажал кнопку в GUI
.
(Да, да - я мог бы просто вызвать IBAction
селектор, но, опять же, характер этого конкретного приложения делает важным, чтобы я имитировал фактическое нажатие кнопки, чтобы сам IBAction
вызов вызывался с кнопки.)
Какой предпочтительный способ сделать это?
ios
iphone
uibutton
touch-event
Olie
источник
источник
Ответы:
Оказывается, что
получил именно то, что мне было нужно, в данном случае.
РЕДАКТИРОВАТЬ: не забудьте сделать это в основной теме, чтобы получить результаты, аналогичные нажатию пользователя.
Для Swift 3:
buttonObj.sendActions(for: .touchUpInside)
источник
[myController myActionMethod:myButton1];
myActionMethod:
не является публичной, и поэтому вы не можете позвонить напрямую.Обновление к этому ответу для Swift
РЕДАКТИРОВАТЬ : Обновлено для Swift 3
источник
Если вы хотите проводить такого рода тестирование, вам понравится поддержка автоматизации пользовательского интерфейса в iOS 4. Вы можете написать JavaScript для имитации нажатия кнопок и т. Д. Довольно легко, хотя документация (особенно часть с самого начала) немного скудны.
источник
Свифт 3:
источник
В этом случае
UIButton
происходит отUIControl
. Это работает для объекта, полученного изUIControl
.Я хотел повторно использовать
UIBarButtonItem
действие для конкретного случая использования. ЗдесьUIBarButtonItem
не предлагает методsendActionsForControlEvents:
Но, к счастью,
UIBarButtonItem
имеет свойства для цели и действия.Здесь,
rightBarButtonItem
имеет типUIBarButtonItem
.источник
Для Xamarin iOS
Ссылка
источник
Свифт 4:
self .yourButton (self)
источник