Click Events aufzeichnen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Click Events aufzeichnen

    Hallo!

    Wahrscheinlich wieder eine typische Anfängerfrage von mir. Ich versuche Click-Events in einem NSDictionary abzuspeichern.

    Zunächst werden die Click-Events in einem Array gespeichert:

    Quellcode

    1. - (void)clickesBegan:(NSSet *)clickes {
    2. [clickCollector addObject:clickes];
    3. }

    Ein Thread ruft dieses Array ab und befüllt damit ein NSDictionary:

    Quellcode

    1. - (void) myThreadMainMethod:(id)param {
    2. NSArray *Inputs;
    3. NSMutableDictionary *inputRecorder = [[NSMutableDictionary alloc] init];
    4. ...
    5. while([inputRecorder count] < 10) //frame update
    6. {Click
    7. ...
    8. while(execution_time > update_time)
    9. {
    10. Inputs = [self getClickEvents];
    11. if ([Inputs count] > 0) {
    12. [inputRecorder setObject:Inputs forKey:[NSNumber numberWithInt:num_updates]];
    13. NSArray *records = [inputRecorder allValues];
    14. int counter = 0;
    15. NSLog(@"Clicking");
    16. for (NSArray *aRec in records) {
    17. for (NSSet *ce in aRec) {
    18. NSLog(@"CE %i Timestamp: %1.2f PosX: %i PosY: %i", counter, [[ce anyObject] timestamp],
    19. (int) ((CGPoint)[[ce anyObject]locationInView:self]).x,(int)((CGPoint)[[ce anyObject]locationInView:self]).y);
    20. counter++;
    21. }
    22. }
    23. [records release];
    24. }
    25. ...
    26. - (NSArray *) getClickEvents {
    27. NSArray *returnvalue = [[NSArray alloc] initWithArray:ClickCollector];
    28. [ClickCollector removeAllObjects];
    29. return returnvalue;
    30. }
    Alles anzeigen

    Nach 3 Clicks hab ich folgendes im Log:

    Quellcode

    1. 2008-08-22 17:40:47.339 [2986:20b] Clicking
    2. 2008-08-22 17:40:47.339 [2986:3c03] CE 0 Timestamp: 23080.49 PosX: 150 PosY: 408
    3. 2008-08-22 17:40:48.170 [2986:20b] Clicking
    4. 2008-08-22 17:40:48.171 [2986:3c03] CE 0 Timestamp: 23080.49 PosX: 0 PosY: 0
    5. 2008-08-22 17:40:48.171 [2986:3c03] CE 1 Timestamp: 23081.32 PosX: 131 PosY: 313
    6. 2008-08-22 17:40:50.554 [2986:20b] Clicking
    7. 2008-08-22 17:40:50.555 [2986:3c03] CE 0 Timestamp: 23080.49 PosX: 0 PosY: 0
    8. 2008-08-22 17:40:50.556 [2986:3c03] CE 1 Timestamp: 23081.32 PosX: 0 PosY: 0
    9. 2008-08-22 17:40:50.556 [2986:3c03] CE 2 Timestamp: 23083.70 PosX: 162 PosY: 219
    10. 2008-08-22 17:40:51.406 [2986:20b] Clicking
    11. 2008-08-22 17:40:51.406 [2986:3c03] CE 0 Timestamp: 23084.55 PosX: 207 PosY: 398
    12. 2008-08-22 17:40:51.407 [2986:3c03] CE 1 Timestamp: 23080.49 PosX: 0 PosY: 0
    13. 2008-08-22 17:40:51.407 [2986:3c03] CE 2 Timestamp: 23081.32 PosX: 0 PosY: 0
    14. 2008-08-22 17:40:51.408 [2986:3c03] CE 3 Timestamp: 23083.70 PosX: 0 PosY: 0
    Alles anzeigen

    Die Click-Objekte scheinen zwar zu existieren, aber locationInView scheint keine brauchbaren Werte mehr zu liefern. Woran kann das liegen?
  • RE: UITouch Events aufzeichnen

    Schön dass die Regeln beachtet sind.

    In der ersten Methode sammelst Du Instanzen von NSSet, schon eine 'collection' in einem NSArray.

    Dann liest Du es aus, und füllst eine Kollektion von Kollektionen mit einem Schlüssel versehen in eine neue Kollektion, dabei entleesrt Du das NSArray in der Mitte.

    Du vergisst, über die unterste Ebene zu iterieren, und probierst es mit 'anyObject'.
    I would be embarrassed if they did not spy on me.