Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当按下按钮时进行检测,然后再向上按下Swift macOS_Swift_Nsbutton - Fatal编程技术网

当按下按钮时进行检测,然后再向上按下Swift macOS

当按下按钮时进行检测,然后再向上按下Swift macOS,swift,nsbutton,Swift,Nsbutton,我正在编写一个向机顶盒发送命令的应用程序。 该框可以接收两种类型的命令:推送和释放 我可以用swift在macOs上按下按钮。 @iAction func btnPressed(sender:NSButton){},我在其中发送命令和释放。对于任何命令,如更改频道、静音或其他,都可以正常工作。 相反,对于“增大音量”或“完成”,我需要通过执行我所做的操作,单击几次来增大或减小音量 我让鼠标上下移动,检测点击发生的位置(在与上下图像对应的NSImageView(如果不是按钮)内),以模拟长时间的音

我正在编写一个向机顶盒发送命令的应用程序。 该框可以接收两种类型的命令:推送和释放

我可以用swift在macOs上按下按钮。 @iAction func btnPressed(sender:NSButton){},我在其中发送命令和释放。对于任何命令,如更改频道、静音或其他,都可以正常工作。 相反,对于“增大音量”或“完成”,我需要通过执行我所做的操作,单击几次来增大或减小音量

我让鼠标上下移动,检测点击发生的位置(在与上下图像对应的NSImageView(如果不是按钮)内),以模拟长时间的音量上下按下,但我无法在按钮按下的方法内进行

“buttonpressed”方法中是否有一种方法可以组合鼠标事件,以便在按住鼠标的同时模拟长时间按下

PS:我也在这里搜索过,但没有找到任何提示。

如果有帮助:

1子类化button类,在mouseDown和mouseUp上触发操作(该操作将触发两次)

}

2:在情节提要中,将NSButton的类更改为您的类:

3:将操作的发送者设置为子类,并检查currentEvent类型:

@IBAction func volUpPressed(sender: myButton) {
    let currEvent = NSApp.currentEvent
    
    if(currEvent?.type == .leftMouseDown) {
        print("volume Up pressed Down")
        //... do your stuff here on mouseDown
    }
    else
    if(currEvent?.type == .leftMouseUp) {
        print("volume Up pressed Up")
        //... do your stuff here on mouseUp
    }
}

看,你好@10Rep。我试着让按钮通过iAction。我尝试获取鼠标事件(向上或向下):在按钮外工作,但当按下按钮时,这些事件不会触发。我试图避免使用iAction,并检测是否在NSImageView中发生了单击(替换NSButton),我得到了我想要的。但我想继续使用按钮,并在iAction中包含逻辑,但我不知道如何做。我读了苹果关于鼠标事件和按钮的文档。如果我没有你那么好的开发人员,我深表歉意。@pm200107别担心。我自己也是个很坏的人。你的问题现在好多了。只要把问题中的所有细节都包括进去,你就可以开始了。嗨@Willeke。谢谢你的提示。我已经读过这篇文章了,但没有成功。我可能错误地设置了IBAction,但基本上,当我单击按钮并保持鼠标向下时,什么都不会发生,IBAction也不会被触发。当我释放单击时,iAction启动,isContinuous为false。我习惯于iOS,而不是macOS。我一直在寻找一种方法(或设置),可以在点击一到就检测到它(因此在点击时触发iAction,而不是在点击释放时触发iAction)。这有意义吗?你在故事板上打开“连续”了吗?这是你的答案吗?你找到答案了吗?那你就可以接受这个答案了。只需单击灰显的复选按钮即可。需要根据第一点的策略等到明天:最短路径:让mask=NSEvent.EventTypeMask(arrayLiteral:[.leftMouseUp,.leftMouseDown])。rawValue self.sendAction(on:NSEvent.EventTypeMask(rawValue:NSEvent.EventTypeMask.rawValue(mask))(作为注释代码添加到asnwer中)
@IBAction func volUpPressed(sender: myButton) {
    let currEvent = NSApp.currentEvent
    
    if(currEvent?.type == .leftMouseDown) {
        print("volume Up pressed Down")
        //... do your stuff here on mouseDown
    }
    else
    if(currEvent?.type == .leftMouseUp) {
        print("volume Up pressed Up")
        //... do your stuff here on mouseUp
    }
}