在 Cocoa/objective-c 中单击 Target 时,操作会被调用两次(鼠标向上/向下)

发布于 2024-10-22 09:24:51 字数 626 浏览 3 评论 0原文

我有一个 NSDatePicker (目标)和 datePickerAction (动作)

- (IBAction)datePickerAction:(id)sender
{

    if( [[[NSApplication sharedApplication] currentEvent] modifierFlags] & 
       NSShiftKeyMask )
        NSLog(@"shift pressed %@", [datePicker dateValue]);

    else
        NSLog(@"hello %@", [datePicker dateValue]);

}

当我单击 NSDatePicker 对象中的日期时,该方法(动作)被调用,问题是该方法被调用两次 - 鼠标向下/向上。

我可以让该方法只调用一次(向上或向下)吗?

编辑

我只有要选择的方法。

在此处输入图像描述

这是连接检查器。 在此处输入图像描述

I have a NSDatePicker (target), and datePickerAction (action)

- (IBAction)datePickerAction:(id)sender
{

    if( [[[NSApplication sharedApplication] currentEvent] modifierFlags] & 
       NSShiftKeyMask )
        NSLog(@"shift pressed %@", [datePicker dateValue]);

    else
        NSLog(@"hello %@", [datePicker dateValue]);

}

It works well as when I click a date in NSDatePicker object, the method(action) is called, the problem is that the method is called twice - mouse down/up.

Can I make the method called only once (up or down)?

EDIT

I only have the method to be selected.

enter image description here

And this is connection inspector.
enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤千羽 2024-10-29 09:24:51

不幸的是,我认为您无法在 Interface Builder 中以这种方式设置 NSDatePicker (或具体而言,NSDatePickerCell),而必须以编程方式进行设置。

这是一个对我来说效果很好的解决方法:

- (void)awakeFromNib
{
    // Assuming @property (assign) IBOutlet NSDatePickerCell *pickerCell;
    [self.pickerCell sendActionOn:NSLeftMouseDown]; // or NSLeftMouseUp or what have you...
}

请注意,您不能在这里使用NSLeftMouseDownMask! (嗯,当然你可以......但这没有帮助。)

Unfortunately, I think you cannot set NSDatePicker (or NSDatePickerCell, to be specific) up this way in Interface Builder, but instead have to do it programmatically.

Here's a workaround that performs fine for me:

- (void)awakeFromNib
{
    // Assuming @property (assign) IBOutlet NSDatePickerCell *pickerCell;
    [self.pickerCell sendActionOn:NSLeftMouseDown]; // or NSLeftMouseUp or what have you...
}

Note that you cannot use NSLeftMouseDownMask here! (Well, of cause you can...but it won't help.)

爱情眠于流年 2024-10-29 09:24:51

您通常希望为特定事件添加目标和操作。当您使用 IB 建立连接时,请查看连接检查器。有一个控制事件列表,您可以为其设置目标操作对。选择一个事件并拖动到操作方法。

You typically want to add a target and action for a particular event. When you are making a connection using IB, look at the Connections Inspector. There is a list of control events to which you can set a target-action pair. Choose an event and drag to an action method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文