2011-12-08 5 views
0

私はobjective-Cを学習しています。マウスダウンイベントを処理する必要があります。マウスイベント:どのインスタンスがどちらですか? (Objective-C)

-(void)mouseDown:(NSEvent *)event { 
    [text_box setFloatValue:1.0]; 
    NSLog(@"It worked!"); 
} 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{ 
    [text_box setFloatValue:-1.0]; 
} 

とインターフェースが私のtext_boxに接続されている唯一のテキストフィールドを持つ:実装ファイルがある一方で

@interface TestAppDelegate : NSWindow <NSWindowDelegate> { 
    NSWindow *window; 
    IBOutlet NSTextField* text_box; 
} 

私のヘッダのようなものです。 xibファイルでは、クラス名をTestAppDelegateに設定しました。

今、マウスダウンイベントが機能しているように見えますが、「これは機能しました!」と表示されます。ログ。ただし、テキストボックスは更新されず、-1のままです。

は何が起こっているのかを理解するために、私は

-(IBAction)scrollerChanged:(id)sender { 
    [text_box setFloatValue:2.0]; 
} 

にリンクされているボタンを追加し、これは正しく私のtext_form2に更新されます。したがって、私の解釈は、マウスダウンイベントがTestAppDelegateの別のインスタンスを呼び出すことです。私は正しい?基本的に何かここで間違っているのですか?

ありがとうございます!

答えて

0

実際にTestAppDelegateという複数のインスタンスがあるようです。 (NSWindowオブジェクトをそれ自身のデリゲートのアプリケーションデリゲートにするのは少し珍しいことです)。

ちょうどあなたはまた、あなたのTestAppDelegateクラスに設定されているXIBにTestAppDelegateに、クラス、および他の一般的なNSObjectオブジェクトを設定して、あなたのXIBでNSWindowを持っているかもしれませんが、推測。

あなたNSWindowインスタンスが実際にmouseDown:イベントを受け取り、1である間、あなたはおそらく、あなたのインスタンスのひとつにtext_box(おそらくアプリデリゲートNSObject 1)をリンクしました。

関連する問題