4

Windowのサイズ変更時のメソッド呼び出しとは? 私は何かを見つけwindowDidResize:たので、やってみます

- (void)windowDidResize:(NSNotification *)notification {
    NSLog(@"test");
}

使用する必要があるものを見つけましたがNSWindowDidResizeNotification、初めて NSNotification を使用し、これについてよく理解していません。誰かが私のイベントの完全な例を書いてくれませんか?

4

2 に答える 2

12

メソッドは、-windowDidResize:ウィンドウ デリゲートで呼び出されます。投稿したメソッドを持つオブジェクトは、ウィンドウのデリゲートですか?

デリゲート以外の場合は、次のことができます。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidResize:) name:NSWindowDidResizeNotification object:theWindow];

そして、オブザーバーがもはや興味を持っていないか、割り当てが解除されている場合:

[[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidResizeNotification object:theWindow];

もう 1 つのアプローチは、新しいブロックベースの API を使用して次のことを行うことNSNotificationCenterです。

id observation = [[NSNotificationCenter defaultCenter] addObserverForName:NSWindowDidResizeNotification object:theWindow queue:nil usingBlock:^(NSNotification *){
    NSLog(@"test");
}];
// store/retain the observation for as long as you're interested in it. When it's deallocated, you stop observing.
于 2012-04-24T10:19:26.950 に答える
0

NSWindowDelegate を実装できます。

class YourVC: NSWindowDelegate {

    // This method trigger when you press the resize button in the window toolbar
    func windowDidResize(_ notification: Notification) {
   
          // Write your code here   

    }
}

そして、 viewDidLoad() または viewDidAppear() メソッドで

 self.view.window?.delegate = self

他のデリゲート メソッドを使用することもできます。

  • windowDidEnterFullScreen
  • windowDidExitFullScreen ...
于 2020-12-04T09:27:54.667 に答える