鼠标事件:哪个实例是哪个? (目标C)

时间:2011-12-08 01:04:22

标签: objective-c mouseevent

我正在学习Objective-C,我需要处理鼠标按下事件。

我的标题如下:

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

而实施文件是:

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

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

并且界面只有一个文本字段连接到我的text_box。在xib文件中,我将类名设置为TestAppDelegate

现在,鼠标按下事件似乎有效,因为我可以看到“它工作了!”登录。但是,文本框未更新,并保留-1

为了了解发生了什么,我添加了一个链接到

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

这正确地将我的text_form更新为2。因此,我的解释是鼠标按下事件正在调用TestAppDelegate的不同实例。我对吗?我在这里做了一些根本错误的事情吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来你确实有多个TestAppDelegate个实例。 (让NSWindow对象成为自己的委托应用委托代表,这有点不寻常。)

猜测一下,你的xib中可能有NSWindow,你将类设置为TestAppDelegate,而xib中的另一个通用NSObject对象也设置为你的TestAppDelegate上课。

您可能只将text_box链接到您的一个实例(可能是应用委托NSObject一个),而您的NSWindow实例是实际接收mouseDown:的实例事件。