はじめて作った、Cocoa アプリケーションの、copy2CB起動後に
ウインドウを左上のバツボタンを押して閉じた後に、再度copy2CBの
アイコンを押して起動させてもウインドウが表示されません。
メニューバーのメニュからアプリケーションを終了させたあとなら、
ふたたび起動させて、ウインドウを表示させることができます。
普通の正常なアプリケーションでは、再度アイコンをダブルクリック
すると、ウインドウが表示されます。Interface Builder での操作時に、
どこか一箇所繋がなかったか、つなぎ間違いなどがあったとおもわれます。
どのあたりに原因があるか、けんとうがつく方がいらしたら教えて
いただけないでしょうか。よろしくお願いいたします。
copy2CB は、下記URLで、source付きで公開しています。
http://www.ne.jp/asahi/kazuo/sasagawa/
アプリケーションのdelegate クラスに、以下の
NSApplicationの delegate method を実装すればいいと思います。
applicationShouldHandleReopen:hasVisibleWindows:
Sent by the application to the delegate prior to default behavior to
reopen (rapp) AppleEvents.
- (BOOL)applicationShouldHandleReopen:(NSApplication
*)theApplicationhasVisibleWindows:(BOOL)flag
お試しください。
> --
> このグループから退会するには、次へメールをお送りください。
> cocoa-dev-jap...@googlegroups.com
> その他のオプションについては以下にアクセスしてください。
> http://groups.google.com/group/cocoa-dev-japan
-----------------------------------------------------
Satoshi Matsumoto <sat...@mac.com>
816-5 Odake, Odawara, Kanagawa, Japan 256-0802
下記の構文を追加して、コンパイルしてみました。しかし状態はかわりませんでした。
c2c.h
- (BOOL)applicationShouldHandleReopen:(NSApplication *)
theApplicationhasVisibleWindows:(BOOL)flag;
c2c.m
- (BOOL)applicationShouldHandleReopen:(NSApplication *)
theApplicationhasVisibleWindows:(BOOL)flag
{
return YES;
}
神吉さんの日本語訳のマニアル NSApplication クラスリファレンスの
applicationShouldHandleReopen:hasVisibleWindows: の内容を読んでいるときに
思いついて、メニューにサブメニューを追加して、showWindow: によりウインドウが
再表示するか、確認をしてしてみました。
- (IBAction)showWindow:(id)sender
{
[self showWindow:nil];
}
で、デバッグコンソールに下記のエラーメッセージが出ました。
============================================
プログラムはシグナルを受信しました:“EXC_BAD_ACCESS”。
warning: Unable to restore previously selected frame.
No memory available to program now: unsafe to call malloc
warning: check_safe_call: could not restore current frame
データフォーマッタが一時的に使用できなくなっています。“続ける”の
後で再試行します。(Not safe to call dlopen at this time.)
warning: Unable to restore previously selected frame.
=========================================
どうも、ウインドウを再表示させるためには、再度データを読み込んで
設定するなど、起動時に行うことをやらないといけないようです。
原因がほぼわかりましたので、再度検討しようと思います。
"Show Window" サブメニューを追加するか、"終了ボタン"をウインドウに
追加して、"終了ボタン"でアプリケーションを終了させるようにしようと
思います。
いろいろとありがとうございました。
2010-2-10 am 0:25 笹川。
> Satoshi Matsumoto <sato...@mac.com>
- (BOOL)applicationShouldHandleReopen:(NSApplication *)
theApplicationhasVisibleWindows:(BOOL)flag
のなかで、実際にアイコンがクリックされたときに行いたいことを
記述しないといけません。
YESを返しただけではなにもしません。
もし、myWindow を表示したいときは以下のようにします。
- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication
hasVisibleWindows:(BOOL)flag
{
[myWindow makeKeyAndOrderFront:nil];
return NO;
}
On 2010/02/10, at 0:39, kssgw wrote:
> 松本さん、早速の投稿ありがとうございました。
>
>
> 下記の構文を追加して、コンパイルしてみました。しかし状態は
-----------------------------------------------------
Satoshi Matsumoto (Artman21 Inc.)
sat...@artman21.co.jp http://www.artman21.com/
TEL/FAX +81-466-24-1028
-----------------------------------------------------
Satoshi Matsumoto <sat...@mac.com>
c2c.h
- (BOOL)applicationShouldHandleReopen:(NSApplication *)
theApplicationhasVisibleWindows:(BOOL)flag;
c2c.m
- (BOOL)applicationShouldHandleReopen:(NSApplication
*)theApplication
hasVisibleWindows:(BOOL)flag
{
[c2cWindow makeKeyAndOrderFront:nil];
return NO;
}
松本さん、たいへんありがとうございました。
2010-2-10 pm 4:40 笹川。
> sato...@artman21.co.jphttp://www.artman21.com/
> TEL/FAX +81-466-24-1028
>
> -----------------------------------------------------