我知道这似乎是一个愚蠢的问题,但它让我很烦恼,这就是为什么我把它放在Stackoverflow上。请稍微宽容一点。
这是我的NSLabel
:
上面有2个NSLabel
显示按钮的名称已安装的应用
显示已安装应用的数量
问题
当我点击NSButton
附近时,MouseDownPreview
操作不会被调用。
P.S:我来自 Microsoft 的 WPF 世界。我们有class MyClass {
var aProperty: (() -> ())?
init() {
// problem when assign property as a method
self.aProperty = aMethod
}
func aMethod() {
print("method!!!")
}
deinit {
print("MyClass is being deinitialized")
}
}
var instance: MyClass? = MyClass()
instance?.aProperty?()
instance = nil
个事件来处理这类情况。我对COCOA了解不多。请帮助,非常感谢...
答案 0 :(得分:2)
主要问题是NSTextField
。文本字段绘制在NSButton
之上,因此它涵盖了它。然后单击文本区域,不将mouseClick事件发送到NSButton
。
你可以用很少的方法来解决这个问题:
NSTextField
创建NSButtons
并设置圆形按钮的操作方法。NSTextField
,并调用圆形按钮的操作。@interface ClickableTextField : NSTextField @end @implementation ClickableTextField - (void)mouseDown:(NSEvent *)theEvent { [self sendAction:[self action] to:[self target]]; } @end
答案 1 :(得分:0)
子类NSTextField并覆盖以下方法以返回nil。
override func hitTest(aPoint: NSPoint) -> NSView? {
return nil
}