gpt4 book ai didi

swift - 如何在 OS X 中对鼠标按下的标签控件进行操作

转载 作者:行者123 更新时间:2023-11-30 13:43:40 25 4
gpt4 key购买 nike

在我的 ViewController 类中:NSViewController

我有以下代码:

@IBAction override func mouseDown(theEvent: NSEvent) {

self.myLabel.textColor = NSColor.redColor()
//either of these work to set the labels text value
self.myLabel.objectValue = "Hello World"
self.myLabel.stringValue = "This is a test"

switch(self) {
case self.myLabel:
//change text of myLabel
break;
case self.myLabel1:
//change text of myLabel1
break;
case self.myLabel2:
//change text of myLabel2
break;
}

}

这可以更改名为 myLabel 的标签控件的文本和颜色,但我的 View 上有 3 个标签控件,如何更改发送鼠标按下事件的标签控件的颜色?我能想到的唯一方法是使用上面代码中的 switch 语句。但我认为有更好的方法,如何使用事件的发送者?

我是 OS X 和 Mac 开发新手,来自 .NET C# 世界,所以感谢您帮助这个 Mac 菜鸟!使用最新的 Swift 和 Xcode。

最佳答案

我确实弄清楚了如何确定是否在 View 的 mouseDown 事件中单击了我的 NSTextField 控件之一:

@IBAction override func mouseDown(theEvent: NSEvent) {

var event_location: NSPoint!
event_location = theEvent.locationInWindow

self.mouseDownEvent = theEvent

var cntrl_id = NSTextField()
var cntrl_frame = NSRect()
var cntrl_name = String()
var cntrl_value = String()
var hit = Bool()

for view in self.view.subviews as [NSView] {
if let ct = view as? NSTextField {
cntrl_name = ct.identifier!
cntrl_id = ct
cntrl_frame = ct.frame
cntrl_value = ct.stringValue
hit = cntrl_frame.contains(event_location)
if hit {
controlToMove = cntrl_id
break
}
}
}


}

可能有一些方法可以提高效率,例如在 View 上保留所有 NSTextField 控件的字典,然后检查字典,看看我是否在其中一个控件上“点击”了。

关于swift - 如何在 OS X 中对鼠标按下的标签控件进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35245398/

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