有没有办法将鼠标事件添加到 Interface Builder 中的 Action?

Is there a way to add the mouse event to an Action in Interface Builder?

有没有办法将鼠标事件添加到 Interface Builder 中的操作?

目前在我的 ViewController.h 我有这个:

- (IBAction)myStepperAction:(id)sender;

在我的 ViewController.m 我有这个:

- (IBAction)myStepperAction:(id)sender { }

在我的事件处理程序中,我有以下内容: (我正在使用 C#,但我可以阅读一些 Swift)

    partial void myStepperAction(Foundation.NSObject sender) {
        var stepper = sender as NSStepper;
    }

如果我添加第二个参数,我会得到一个错误:

    partial void myStepperAction(Foundation.NSObject sender, Event event) {
        var stepper = sender as NSStepper;
        var value = event.CTRLKey==true ? stepper.DoubleValue + 10 : stepper.DoubleValue;
    }

CS0759: No defining declaration found for implementing declaration of partial method 'ViewController.myStepperAction(NSObject, EventArgs)'

有没有办法将事件传递给分部方法?或者有没有办法获取应用程序鼠标事件?

我想做的是当点击步进器时,检查是否也按下了 CTRL 或 SHIFT 键,使其递增 10 而不是 1。

您可以使用CGEventSourceKeyState来检测当前是否按下了特定的键。

您可以在 link 中找到 control 的确切数字。

应该是0x3B.

检查下面 Xamarin 中使用的代码

partial void myStepperAction(Foundation.NSObject sender) {
    var stepper = sender as NSStepper;

    bool isCtrlPressed = CGEventSource.GetKeyState(0,0x3b);
    var value = isCtrlPressed ? stepper.DoubleValue + 10 : stepper.DoubleValue;
       
}