在我的类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的Label Control的文本和颜色,但是我在View上有3个Label控件如何更改发送鼠标按下事件的颜色?我能想到的唯一方法就是使用上面代码中的switch语句。但是我认为有一些更好的方法可以使用事件的发送者吗?
我是OS X和Mac开发的新手,来自.NET C#世界,所以感谢帮助这个Mac菜鸟!使用最新的Swift和Xcode。
答案 0 :(得分:0)
我确实弄清楚如何确定我的NSTextField控件是否在视图的mouseDown事件中被单击:
@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
}
}
}
}
可能有一些方法可以提高效率,例如在视图上保留所有NSTextField控件的字典,然后 检查字典是否在其中一个控件上有“点击”。