selbst erstellte Delegatemethode wird nicht aufgerufen

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

Macoun 2019 - Frühbucherrabatt bis 26.7.2019

  • selbst erstellte Delegatemethode wird nicht aufgerufen

    Hi, ich habe eine Subklasse von NSTextView erstellt (-->ERTextView).

    h.

    Quellcode

    1. #import <Cocoa/Cocoa.h>
    2. @protocol ERTextViewDelegate <NSObject>
    3. - (void) setIsHighlightedBool: (BOOL) jaNein;
    4. @end
    5. @interface ERTextView : NSTextView
    6. {
    7. id <ERTextViewDelegate> delegate;
    8. }
    9. @property (nonatomic, assign) id <ERTextViewDelegate> delegate;
    10. @end
    Alles anzeigen


    m.

    Brainfuck-Quellcode

    1. #import "ERTextView.h"
    2. @implementation ERTextView
    3. @synthesize delegate;
    4. //----------------------------------------------------------------------------------- (id) initWithFrame: (NSRect) frameRect
    5. - (id) initWithFrame:(NSRect)frameRect
    6. {
    7. if (self=[super initWithFrame:frameRect])
    8. {
    9. [[self window] setAcceptsMouseMovedEvents:YES];
    10. }
    11. return self;
    12. }
    13. //----------------------------------------------------------------------------------- (void) viewDidMoveToWindow
    14. - (void) viewDidMoveToWindow
    15. {
    16. int options= NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways | NSTrackingInVisibleRect;
    17. NSTrackingArea *ta = [[NSTrackingArea alloc] initWithRect: NSZeroRect options: options owner: self userInfo: nil];
    18. [self addTrackingArea: ta];
    19. [ta release];
    20. }
    21. //----------------------------------------------------------------------------------- (void) mouseEntered: (NSEvent*) theEvent
    22. - (void) mouseEntered: (NSEvent*) theEvent
    23. {
    24. //[viewRect setIsHighlighted:YES];
    25. NSLog(@"MouseEntered");
    26. [self.delegate setIsHighlightedBool:YES];
    27. }
    28. //----------------------------------------------------------------------------------- (void) mouseExited: (NSEvent*) theEvent
    29. - (void) mouseExited: (NSEvent*) theEvent
    30. {
    31. NSLog(@"MouseExited");
    32. [self.delegate setIsHighlightedBool:NO];
    33. }
    34. @end
    Alles anzeigen


    Dies ist mein erster Versuch ein eigenes Delegate zu erstellen. Wenn ich also mit der Maus über ein erstelltes ERTextField fahre, soll in meiner ViewController.m-Datei die Methode: "- (void) setIsHighlightedBool: (BOOL) jaNein" aufgerufen werden. Dies funktioniert nicht! Warum wird die Methode nicht aufgerufen?
    Hier ist ein kleiner Ausschnit aus der ViewController.h-Datei:

    Quellcode

    1. #import "ERTextView.h"
    2. @interface ViewController : NSView <ERTextViewDelegate>


    Im Terminal wird "MouseEntered" oder "MouseExited" ausgegeben. Aber danach passiert nichts mehr.
  • Mac & i Test Abo