Ich schreibe einige Unit-Tests und aufgrund der Natur dieser speziellen App ist es wichtig, dass ich so hoch UI
wie möglich in der Kette bin . Ich möchte also programmgesteuert einen Knopfdruck auslösen, als hätte der Benutzer den Knopf in der Taste gedrückt GUI
.
(Ja, ja - ich könnte einfach den IBAction
Selektor aufrufen, aber auch hier macht es die Art dieser speziellen App wichtig, dass ich den tatsächlichen Tastendruck vortäusche, so dass der IBAction
über die Taste selbst aufgerufen wird.)
Was ist die bevorzugte Methode dafür?
ios
iphone
uibutton
touch-event
Olie
quelle
quelle
Antworten:
Es stellt sich heraus, dass
In diesem Fall habe ich genau das bekommen, was ich brauchte.
BEARBEITEN: Vergessen Sie nicht, dies im Hauptthread zu tun, um Ergebnisse zu erhalten, die einem Benutzerdruck ähneln.
Für Swift 3:
buttonObj.sendActions(for: .touchUpInside)
quelle
[myController myActionMethod:myButton1];
myActionMethod:
nicht öffentlich ist und Sie es daher nicht direkt aufrufen können.Ein Update zu dieser Antwort für Swift
BEARBEITEN : Aktualisiert für Swift 3
quelle
Wenn Sie diese Art von Tests durchführen möchten, werden Sie die UI-Automatisierungsunterstützung in iOS 4 lieben. Sie können JavaScript schreiben, um das Drücken von Tasten usw. ziemlich einfach zu simulieren, obwohl die Dokumentation (insbesondere der Teil mit den ersten Schritten) etwas ist spärlich.
quelle
In diesem Fall
UIButton
wird abgeleitet vonUIControl
. Dies funktioniert für Objekte, die von abgeleitet sindUIControl
.Ich wollte die
UIBarButtonItem
Aktion " " für einen bestimmten Anwendungsfall wiederverwenden . HierUIBarButtonItem
bietet keine MethodesendActionsForControlEvents:
Aber zum Glück
UIBarButtonItem
hat Eigenschaften für Ziel & Aktion.Hier
rightBarButtonItem
ist vom TypUIBarButtonItem
.quelle
Für Xamarin iOS
Referenz
quelle
Swift 3:
quelle
Swift 4:
self .yourButton (self)
quelle