swift - 为什么我的 NSView 在点击时不绘制内容?

标签 swift cocoa nsview

在我制作的自定义 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/

相关文章:

json - 无法将数据转换为 NSDictionary

objective-c - Cocoa:NSButton被点击后消失。但仍然活跃

macos - WKWebView osx 设置背景颜色

objective-c - NSTextField 是第一响应者,但我仍然必须在输入之前在文本框内单击

macos - 如何将自定义 NSView 添加到 Window

swift - 使用 UIBezierPath 在用户单击的位置绘制圆形

ios - 快速添加基于模板的 UIView?

ios - collectionView didSelectItemAt superview 没有选择正确的对象

cocoa - 帮助我理解OpenGL glGenBuffers()

cocoa - 以 NSDates 作为键的 NSDictionary