以下の内容はhttps://anton0825.hatenablog.com/entry/20130329/1367138029より取得しました。


NSWindowのdelegateメソッドが呼ばれない

windowDidResignKeyが呼ばれなくて困ったという話。


NSWindowのサブクラスで↓のようにself.delegate = selfとしてNSWindowDelegateのメソッドを自分で処理しようとしたがdelegateメソッドが全然呼ばれない。

- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag{
    self = [super initWithContentRect:contentRect styleMask:aStyle backing:bufferingType defer:flag];
    if (self) {
        self.delegate = self;
        ・・・
    }
    return self;
}

- (void)windowDidResignKey:(NSNotification *)notification; {
    if (self.isVisible) {
        self.showing = NO;
    }
}

調べてみたらNSWindowControllerからwindowがロードされたタイミングで強制的にdelegate先がNSWindowControllerにされるっぽい。まじか。。
しょうが無いのでwindowDidResignKeyをNSWindowController側に移して解決した。




以上の内容はhttps://anton0825.hatenablog.com/entry/20130329/1367138029より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14