【问题标题】:How to differentiate mouse click from key press for NSButton in IBAction如何区分 IBAction 中 NSButton 的鼠标点击和按键
【发布时间】:2013-08-13 12:05:52
【问题描述】:

目前我有一个 NSButton 的 IBAction,并且 NSButton 也有一个等效键。我想知道我的 IBAction 函数“strike”中是否有办法

- (IBAction)strike:(id)sender

这可以告诉我这个动作是由鼠标点击按钮还是按下按钮的等效键触发的?

【问题讨论】:

  • NSEvent。你想要 NSEvent。您可以检查事件以了解它是如何被调用的。但 IBAction 默认为发件人传递 id。它适用于检查一个动作是否总是由按钮、菜单或其他对象触发。你想完成什么?
  • 没有办法从发件人那里得到 NSEvent 吗?我基本上是在编写一个小的虚拟乐器程序,我希望按键(NSButton)根据点击或按键触发的不同点亮。
  • 我猜 sender 和 NSEvent 是完全不同的东西......也许我会尝试考虑另一种方法来达到同样的效果。
  • 您可以创建一个非常薄的按钮或控件子类。只需添加一个事件属性并覆盖 keyDown 和 mouseDown 以捕获该事件并调用 super 以按预期运行。然后你可以询问发送者这个动作是如何被调用的。
  • 一个类别也可以工作,使您能够使用普通类

标签: objective-c xcode macos ibaction nsbutton


【解决方案1】:

使用-currentEvent 获取当前事件并使用 if 循环检查鼠标点击次数

if([theEvent clickCount]>=1)
{
mouse clicked;
}
else
{
button pressed;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-27
    • 2022-12-18
    • 2011-05-09
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    相关资源
    最近更新 更多