UIButton block entspricht addTarget:action:forControlEvents: Methode?
Schaute ich mich um, konnte aber nichts finden, das auf das internet, noch überall in den Apple-docs, so dass ich vermute, es existiert nicht.
Aber ist es ein iOS4-Blöcke entspricht API:
[button addTarget:self action:@selector(tappy:) forControlEvents:UIControlEventTouchUpInside];
Ich nehme an, dass dies umgesetzt werden könnte, mit einer Kategorie, sondern würde eher nicht schreiben, das mich aufgrund extreme Faulheit 🙂
Sowas wäre genial:
[button handleControlEvent:UIControlEventTouchUpInside withBlock:^ { NSLog(@"I was tapped!"); }];
InformationsquelleAutor der Frage Ben Scheirman | 2010-10-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gerade umgesetzt. Es funktioniert wie ein Charme!
Und es war nicht einmal schwer.
InformationsquelleAutor der Antwort Martin Reichl
Gibt es eine Bibliothek von Blöcken Ergänzungen, um die gemeinsame Basis/UI-Klassen: BlocksKit. Hier ist die Dokumentation.
Es nicht Unterklasse UIButton, fügt aber hinzu,UIControl Kategorie:
Gibt es auch Blöcke/funktionale Ergänzungen zu Sammlungen (map, filter, etc.), Ansichten-related stuff und mehr.
HINWEIS: Sie nicht spielen gut mit Swift.
InformationsquelleAutor der Antwort Cfr
Hier ist eine Arbeit der Kategorie Umsetzung. In seiner aktuellen form, dieser sollte nur verwendet werden
DEBUG
. Ich verwenden Sie diese Kategorie in Verbindung mit einer Funktion (im Lieferumfang enthalten unten) , testen Sie verschiedene bits von code, wenn der Benutzer die Interaktion und das timing sind wichtig. Wieder ist dies nur für Entwicklungs - /debug-Zwecke und sollte nicht berücksichtigt werden, die für die Produktion, damit die#ifdef DEBUG
😉InformationsquelleAutor der Antwort Shayne Sweeney
Erstellte ich eine Bibliothek, genau dies zu tun!
Unterstützt
UIControl
(UIButton
),UIBarButtonItem
undUIGestureRecognizer
. Es wird auch unterstützt, mithilfe von CocoaPods.https://github.com/lavoy/ALActionBlocks
Installieren
InformationsquelleAutor der Antwort lavoy
ICH SCHRIEB DIES VOR LANGER ZEIT, UND ES IST NICHT DER WEG, UM DIESES PROBLEM ZU LÖSEN!!! Unterklassen UIButton schafft ein Minenfeld, das einfach nicht Wert. Verwenden Shayne Sweeney Kategorie(ich habe gerade aktualisiert seine Antwort mit ein paar Verbesserungen zu machen sein Beispiel Produktion fertig... ich hoffe Sie wird schnell genehmigt zu bekommen).
-----ORIG-POST - - - - - -
Den code gepostet von Martin sollte Sie arbeiten, wenn Sie nur die Zuordnung der UIControlEventTouchUpInside... aber es gibt ein paar Probleme:
In meinem code, ich verlasse mich auf Blöcke behandelt, als Objekt-c-Objekte, die nur auf iOS4+(nicht 3.2). Es funktioniert gut für mich, wenn ich will, etwas zu tun spezielle für die button-Zustände(z.B. Animationen). Sie können einfach verwenden Sie die clickedButton block für die Handhabung von normalen Klicks.
InformationsquelleAutor der Antwort Gabe
Swift 4
Hier ist die swift-Lösung
Beispiel:
InformationsquelleAutor der Antwort levin varghese
Es ist REKitdie aus bringt die Blöcke latente Fähigkeit. Es gibt Ihnen die Fähigkeit zum hinzufügen/überschreiben-Methode, um eine Instanz using-Block.
Mit REKit, können Sie dynamisch zu machen, ein Ziel - die Antwort auf buttonAction - wie unten:
Brauchen Sie nicht, um eine Unterklasse noch eine Kategorie.
Zusätzlich zum target/action-Paradigma, die Sie verwenden können, REKit für delegation pattern.
InformationsquelleAutor der Antwort Kazki
Find ich es einfach und vielseitig zu verwenden, eine kleine helper-Klasse:
und verwenden Sie es wie diese:
InformationsquelleAutor der Antwort yeoman
Swift-Erweiterung /Kategorie basierte Implementierung, die ich peitschte. Mit OBJC zugehörigen Objekte ist nicht ein anti-pattern. 😛
InformationsquelleAutor der Antwort BadPirate