2016-05-16 17 views
2

iOSアプリケーションの場合と同様に描画しようとすると、問題が発生しました。運がない数時間の検索の後、私たちはここで尋ねることにしました。Swiftを使用したCocoaでの描画エラーを作成します

はその後、我々はこの

enter image description here

ようNSViewにクラスを接続し、我々は

import Cocoa 

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

     // drawing code 
    } 
} 

としてクラスを作成した図面を作成するために、しかし、我々は

を受けています - [NSApplication runModalForWindow:]はトランザクションcommi内で呼び出されないことがありますt(通常、これは ビューの-drawRect:メソッドの内部で呼び出されたことを意味します)。モーダルダイアログは デッドロックを回避するように抑制されています。

メッセージを描画する代わりにコンソールから送信します。

さらに、印刷(「drawRectが実行されました」)が実行されませんでした。

ほとんどの場合、私たちは単純なことを忘れています。

+0

関連:https://stackoverflow.com/questions/30955889/selecting- global-or-object-print-function –

答えて

1

あなたのクラスはNSViewのから継承:printあなたが使用しているので、

class DrawImageHolder: NSView 

print(" drawRect is executed ") 

が実際にNSViewさんprintです。ビューは印刷のためのダイアログを表示しようとしますが、エラー状態としては表示しないはずの場所から行います。

ソリューションは、明示的スウィフトのprint代わりのNSViewprintを使用しているように、Swiftprintの前に付けることです。

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

'CGContextFillPath(context)'はコメント内にコードを描画するべきではないので、消去時に問題が解決されました。 – Hope

関連する問題