2012-02-25 36 views
4

cancelOperation:私のベアボーンNSViewサブクラスでEscを押しても呼び出されていません。NSViewサブクラスでcancelOperationが呼び出されていません

私は確認し、keyDownにEscキーを受け取りました。また、他のアクションメッセージ(moveLeftなど)が呼び出されています。私は間違って何をやっている

[self.window addChildWindow:wc.window ordered:NSWindowAbove]; 
[wc.window makeKeyAndOrderFront:self]; 

ビューは次のように示されているウィンドウの一部ですか?

答えて

0

cancelOperationまたはcancelOperation:として実装していますか?大きな違いがあります。メソッドの署名は次のとおりです。

- (void)cancelOperation:(id)sender 

これはバニラで私には役に立ちますNSView

+0

イエップ。 cancelOperation: – hpique

+1

問題はおそらく 'keyDown:'を実装していて、実装内で 'interpretKeyEvents:'を呼び出さないということでしょう。 'keyDown:'を実装しないか、実装内で '[self interpretKeyEvents:[NSArray arrayWithObject:theEvent]]を呼び出す必要があります。 –

+0

いいえ、keyDown:を実装していません。私はEscが受信されたことをテストした後、削除しました。 – hpique

0

私の派生したNSViewにも同じ問題がありました。

- (BOOL)acceptsFirstResponder 
{ 
    return YES; 
} 
0

を私の場合、私はNSWindow秒のカップルとアプリを持っている:それは次のようにacceptsFirstResponderを実装した後に解決しました。私のNSViewサブクラスに [self.window makeFirstResponder:self]を呼び出して、ビューがcancelOperation:に応答するようにしなければなりませんでした。

関連する問題