Die beste Lösung, die ich mir vorstellen kann, ist, eine andere Klasse und Unterklasse UIButton zu erstellen. Dann können Sie im Interface Builder (wenn Sie das verwenden) die Klasse der Schaltfläche auf die benutzerdefinierte Klasse setzen, die Sie gerade erstellt haben.
So in dieser neuen Klasse, müssen Sie eine Methode
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
Diese im Grunde genannt außer Kraft gesetzt wird, die besagt, dass jemand auf Ihrer Taste gedrückt wird. Die Berührungen sind ein NSSet und es enthält alle Informationen für alle Finger, die auf den Bildschirm drücken. Wenn Sie nur in der einen interessiert sind, die sich auf die Schaltfläche drücken, werden Sie wahrscheinlich so etwas wie haben:
NSSet *myTouches = [event touchesForView:self.view];
So, jetzt, dass Sie die berührt haben, die Ihre Taste entsprechen, müssen Sie herausfinden, wie viele Mal, dass der Benutzer auf diese Schaltfläche geklickt hat. Sie tun das mit etwas wie:
NSUInteger numTaps = [[myTouches anyObject] tapCount];
Wenn diese Zahl 2 ist, bedeutet das, dass der Benutzer nur zweimal auf Ihre Schaltfläche geklickt hat. Jetzt kommt der nächste Teil. Woher weißt du, ob der Benutzer diesen Knopf hält? Gut, wenn der Benutzer den Bildschirm loslässt, wird eine andere Methode aufgerufen. Sie werden auch, dass man außer Kraft setzen müssen:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
Dies ist, wo Sie wissen, ob die Person den Bildschirm zu berühren oder wenn mit dem Finger auf sie ist immer noch zum Stillstand gekommen ist. Wenn sich sein Finger noch darauf befindet, wurde dieses Ereignis noch nicht aufgerufen.
Jetzt genug mit dem Hintergrund
Hier ist mein Vorschlag an Sie. Ich schlage vor, Sie überschreiben die touchesBegan: -Methode und überprüfen Sie, ob die Anzahl der Taps in der Taste 2 ist. Wenn ja, dann starten Sie einen Timer, der tut, was Sie tun müssen, so lange Sie es tun müssen, und dann Mit der Methode touchesEnded: werden Sie den Timer stoppen und auf diese Weise haben Sie alles getan, was Sie tun müssen, solange Sie es tun müssen, ODER solange der Benutzer es durchgehalten hat zum Knopf.
Ich hoffe, das hilft, offensichtlich habe ich nicht den ganzen Code für Sie geschrieben, Sie müssen experimentieren und recherchieren, aber wenn Sie irgendwelche Fragen haben, werde ich gerne helfen:)
Kann ich longPressGestureRecognizer in Cocos2D oder Box2D Spiel verwenden. In meinem Spiel muss ich den Spielersprung abhängig von der Dauer der Berührung auf dem Bildschirm variieren? Oder was kann meine Lösung noch sein? – Nitish