2016-05-16 31 views
2

當試圖繪製就像在iOS應用程序中一樣,我們遇到了問題。經過幾個小時的搜索,沒有運氣,我們決定在這裏問。使用Swift在Cocoa上繪圖創建錯誤

爲了讓我們創建一個類,

import Cocoa 

class DrawImageHolder: NSView { 
    override func drawRect(dirtyRect: NSRect) { 
     super.drawRect(dirtyRect) 
     print(" drawRect is executed ") 

     // drawing code 
    } 
} 

繪圖那麼我們連接類的NSView這樣

enter image description here

但是我們已經收到

- [NSApplication runModalForWindow:]可能不會在事務處理中被調用t(通常這意味着它在一個 視圖的-drawRect:方法內調用。)模態對話框已被抑制爲 避免死鎖。

來自控制檯而不是繪圖的消息。

除了打印(「執行drawRect」)未執行。

我們很可能忘記了一件簡單的事情。

+0

相關:https://stackoverflow.com/questions/30955889/selecting-全局或對象打印功能 –

回答

1

你的類從一個NSView繼承:

class DrawImageHolder: NSView 

所以print你使用:

print(" drawRect is executed ") 

實際上是NSViewprint。該視圖試圖顯示一個打印對話框,並且作爲錯誤狀態,它從它不應該的位置開始。

的解決方案是,你明確使用雨燕的print代替NSViewprint的前綴printSwift這樣:

class DrawImageHolder: NSView { 
    override func drawRect(dirtyRect: NSRect) { 
     super.drawRect(dirtyRect) 
     Swift.print(" drawRect is executed ") 
    } 
} 
+0

'CGContextFillPath(context)'不應該存在於註釋中的代碼中,因此當它被擦除時問題已經解決。 – Hope