有没有办法将鼠标事件添加到 Interface Builder 中的 Action 中? [英] Is there a way to add the mouse event to an Action in Interface Builder?

查看:38
本文介绍了有没有办法将鼠标事件添加到 Interface Builder 中的 Action 中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

目前在我的 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:找不到用于实现声明的定义声明部分方法 'ViewController.myStepperAction(NSObject, EventArgs)'

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

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

解决方案

您可以使用 CGEventSourceKeyState 检测当前是否按下特定键.

您可以在此链接中找到control的确切数字.

应该是 0x3B .

检查下面 Xamarin 中使用的代码

partial void myStepperAction(Foundation.NSObject sender) {var stepper = sender as NSStepper;bool isCtrlPressed = CGEventSource.GetKeyState(0,0x3b);var 值 = isCtrlPressed ?stepper.DoubleValue + 10 : stepper.DoubleValue;}

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

Currently in my ViewController.h I have this:

- (IBAction)myStepperAction:(id)sender;

In my ViewController.m I have this:

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

In my event handler I have the following: (I'm using C# but I can read some Swift)

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

If I add a second argument I get an error:

    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)'

Is there a way to pass the event to a partial method? Or is there a way to get an application mouse event?

What I want to do is when the stepper is clicked, check if the CTRL or SHIFT key is also pressed to make it increment by 10 instead of 1.

解决方案

You can use CGEventSourceKeyState to detect whether the specific key is pressed currently or not .

And you can find the exact number for control in this link .

It should be 0x3B .

Check the code used in Xamarin below

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;
       
}

这篇关于有没有办法将鼠标事件添加到 Interface Builder 中的 Action 中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆