在我制作的自定义 NSView 上,我以这种方式覆盖了 mouseDown 方法:
override func mouseDown(theEvent: NSEvent) {
let location = self.convertPoint(theEvent.locationInWindow, fromView: nil)
NSColor.blackColor().set()
let basisRect = CGRect(origin: location, size: CGSize(width: 10, height: 10))
let roundPath = NSBezierPath(ovalInRect: basisRect)
roundPath.fill()
needsDisplay = true
}
但是当我点击 时我没有绘制任何东西(即使在我使用 println() 检查时触发了 mouseDown
方法)
您知道为什么没有任何反应以及如何解决吗?
编辑(这是我的 drawRect 函数):
override func drawRect(dirtyRect: NSRect) {
super.drawRect(dirtyRect)
NSColor.blackColor().set()
let middlePoint = (self.bounds.size.width/2)
let basisRect = CGRect(origin: CGPoint(x: middlePoint-5, y: 10), size: CGSize(width: 10, height: 10))
let roundPath = NSBezierPath(ovalInRect: basisRect)
roundPath.fill()
let bottomLegPath = NSBezierPath()
bottomLegPath.moveToPoint(CGPoint(x: middlePoint, y: 10))
bottomLegPath.lineToPoint(CGPoint(x: middlePoint, y: middlePoint))
bottomLegPath.lineWidth = 5
bottomLegPath.stroke()
}
谢谢。
最佳答案
NSView 通过调用drawRect:
进行绘制。只有 drawRect:
中的内容才重要。您没有显示您的 drawRect:
代码,但我敢打赌您没有。这是您需要绘制圆形路径的地方,而不是在 mouseDown
实现中。
关于swift - 为什么我的 NSView 在点击时不绘制内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30383130/