iOSで可能であるように、MacのIBでこれを行う方法はないのではないかと思います。
UIKitとAppKitは、多くの点で似ていますが、2つの非常に異なる獣です。AppKitには1990年代(おそらく1980年代後半)にまでさかのぼる遺産があり、いくつかの場所で透けて見えます(私はあなたを見ています、NSCell)、UIKitは約20年の経験に基づいて設計されましたAppKit。
また、アクションがいつ呼び出されるかを簡単に知ることができますがUIControl(イベントごとに異なるアクションを設定NSControlできます)、送信する1つのアクションを指定するだけで済みます。
またはとをオーバーライドしたくない場合-[NSButtonCell stopTracking:at:inView:mouseIsUp:]、-[NSButton mouseDown:]目的-[NSButton mouseUp:]を達成するための最も簡単な方法は、アクションを継続的に送信するようにボタンを設定することです。これは、IBのボーンである可能性があります([コントロール]カテゴリの[属性]インスペクター内)。
次に、説明をレイヤーバックにして、アクションメソッドを次のように書き直します。
- (IBAction)toggleIt:(id)sender {
CALayer *descriptionLayer = [myDescription layer];
[descriptionLayer setHidden:NO]; // (ab-)use implicit animation
[descriptionlayer performSelector:@selector(setHidden:) withObject:@"" afterDelay:.1];
}
使い方:
CALayerの「非表示」プロパティはアニメーション化可能であるため、変更すると暗黙的なアニメーションが発生します。0x0Objective Cは単なるCであるため、解釈されないものはすべて、3行目が当たる場所になります。このアクションが戻った直後にYES空の文字列が表示されるのは明らかではないため、レイヤーが呼び出されて非表示になります。0x0ただし、CATransitionsは徐々に発生し、途中で更新できるため、アクションがトリガーされなくなったとき、つまりボタンが押されなくなったときにのみ、レイヤーの可視性に影響します。