動機
未来派図画工作さんのTwitter(zuga)で紹介されていたこちらのプロジェクトで遊んでみてた(感謝).
Keyboardパッチを利用したqtzを入れたところイベントがとれないみたいだった.
そういう使い方は想定されていないプロジェクトなんだと思うが,ちょっとやりたいことがあったので調べてみた.
調べてみた
調べてみるとNSWindowのスタイルをNSBorderlessWindowMaskにするとキーイベントがとれなくなるということがわかった.
これを回避するにはNSWindowのsubclassで"- (BOOL)canBecomeKeyWindow"の返り値をYESにすればよいそうだ.
やってみた
しかしこれだけでは私の環境ではQCView内のqtzへはイベントが送られていないようだった.
とりあえずmakeFirstResponderでqcViewを指定してあげたら反応してくれました.
で,出来たコードがこちら(説明のママだけど一応).MyWindow.h#import <Cocoa/Cocoa.h>
@interface MyWindow : NSWindow {
}
@endMyWindow.m#import "MyWindow.h"
@implementation MyWindow
- (BOOL)canBecomeKeyWindow
{
return YES;
}
@endMainMenu.xibでやることWindowを選択し,インスペクタのIdentityタブにあるClassをMyWindowにする.
Saveを忘れずに.QC_FullscreenAppDelegate.m をチョコット編集#import "QC_FullscreenAppDelegate.h"
@implementation QC_FullscreenAppDelegate
…
-(void)fullscreen{
…
[window makeFirstResponder:qcView];
}
@end
なんのひねりもないですが,メモとしてPOST.
0 件のコメント:
コメントを投稿