gpt4 book ai didi

cocoa - 即使启用为 NO,NSButton 子类仍然运行鼠标事件方法

转载 作者:行者123 更新时间:2023-12-03 16:37:11 26 4
gpt4 key购买 nike

setEnabled: 方法在我已重写 mouse{down,drag,up}NSButton 子类中不起作用,并且右键{向下、拖动、向上}。我觉得按钮的启用/禁用应该在这些功能之外——按钮在禁用时不应该首先接收鼠标事件。

当我覆盖这些函数时,我是否必须明确地进行检查?

最佳答案

我认为您确实需要自己检查。

Apple's writeup on Cocoa Event Architechture 中所述,包含您的按钮的窗口正在向您的按钮发送 mouseDown: (或任何其他合适的方法)以响应接收事件。为了让窗口决定不发送消息,它必须首先确定该按钮是 NSControl 子类(enabledNSControl 的属性) ,但不是 NSView),然后检查该 enabled 标志。这超出了窗口的责任范围。正在启用的控件不像第一响应者状态那样属于事件调度系统的一部分。

作为一个有趣的见解,如果您看一下 GNUStep's -[NSControl mouseDown:] implementation ,他们确实在处理事件之前检查[self isEnabled]

关于cocoa - 即使启用为 NO,NSButton 子类仍然运行鼠标事件方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17459868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com