Messen wie lang ein Button gedrückt wurde - Xcode

P

Pubaer

Registriert
Thread Starter
Dabei seit
16.01.2012
Beiträge
3
Reaktionspunkte
0
Hallo zusammen,

ich arbeite gerade an meiner ersten Iphone-App.
Jetzt habe ich eine View mit einem Button und möchte messen wie lang dieser gedrückt wurde. Diesen Wert würde ich dann gerne an eine andere Methode weitergeben.
Gibt es hier zufällig jemand der sowas weiß/kann?

freundliche Grüße
Pubaer
 
Alternative: abfragen wann der Knopf angefangen wurde zu drücken, anfragen, wann er gelöst wurde, differenz ermitteln ;)
 
  • Gefällt mir
Reaktionen: little_pixel und below
Könnte man nicht auch einen Timer mitlaufen lassen?
 
Wozu wenn der Knopf einen brav über beide Events informiert? Der Timer ist die Clock des Gerätes.
 
  • Gefällt mir
Reaktionen: buk
Des war doch nur so eh Ideesche ... :)
 
Vielen Dank für die schnellen Antworten.

Die Lösung von ebm klingt nach genau dem was ich suche. Ich bin aber nicht sicher wie sie umzusetzen wäre. Könnte mir jemand ein entsprechendes Code Beispiel liefern?
Zur Verständnis, ebms Lösung würde Continuous Control nutzen, nur ohne continuous messages, sondern nur die "Anfangs-" und "Endmessage" nutzen?

Vielen Dank
 
Nö, das sind 2 verschiedene Ansätze.
_ebm_ fängt die Nachrichten, die beim Drücken und Loslassen gefeuert werden, setzt jeweils ein Feld mit der aktuellen Zeit und subtrahiert die Zeiten danach, er benötigt also kein Continous Control, soweit ich das verstehe.
Der von mir verlinkte Ansatz geht anders vor, er ist vmtl. etwas weniger genau, andrerseits muss es einen Grund geben, warum Apple diese API direkt anbietet.
Code gibts von mir nicht, bin leider kein Cocoa Programmierer und sitze (leider) auch momentan nicht vor nem Mac(kann aber APIs und Guides lesen ;-)

Und hier noch ein Codebeisiel von Tante G.: http://hintsforums.macworld.com/archive/index.php/t-67656.html
 
Zuletzt bearbeitet:
Du legst zwei Methonden/Messages im Controller an und verbindest sie mit den Aktionen von deinem Button. In einer Message wird eine Instanzvariable mit einem Timestamp/NSDate gefüllt, in der zweiten wird der Wert mit der aktuellen Zeit verglichen. Da brauchst Du keine Code-Snippets zu. ;)

Continuous Controll braucht man, wenn man Zwischenwerte abfragen will, zB Laufbalken steuern usw.
 
  • Gefällt mir
Reaktionen: ruerueka
Fertig. Hier meine Lösung:
Vielen Dank für eure Hilfe. Leider habe ich noch zuwenig Beitrage um mich mit dem Danke-Button zubedanken, sonst hätte ich das getan. :D

.m :

@implementation buttonTimeViewController

- (IBAction) start {
myTicker = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:mad:selector(showActivity) userInfo:nil repeats:YES];
}
- (IBAction) stop {
[myTicker invalidate];
}
- (void)showActivity {
float currentTime = [time.text floatValue];
float newTime = currentTime + 0.1;
time.text = [NSString stringWithFormat:mad:"%.1f", newTime];
}
-(IBAction)reset{
time.text = @"0";
}



@end

.h:

@interface buttonTimeViewController : UIViewController {

IBOutlet UILabel *time; //Label das die Zeit anzeigt im InterfaceBuilder
NSTimer *myTicker;

}

-(IBAction)start; //Touch down - Mess-Button im InterfaceBuilder
-(IBAction)stop; //Touch up inside - Mess-Button im InterfaceBuilder
-(void)showActivity;
-(IBAction)reset; //touch up inside - Reset-Button im InterfaceBuilder

@end
 
Zurück
Oben Unten