はじめての投稿です。

131 views
Skip to first unread message

kssgw

unread,
Feb 8, 2010, 9:59:29 AM2/8/10
to cocoa-dev-japan
はじめての投稿です。
笹川和夫と申します。昭和21年生まれの、63歳です。
Mac歴5年、iMac,Mac OS X 10.6 を使用しています。

はじめて作った、Cocoa アプリケーションの、copy2CB起動後に
ウインドウを左上のバツボタンを押して閉じた後に、再度copy2CBの
アイコンを押して起動させてもウインドウが表示されません。
メニューバーのメニュからアプリケーションを終了させたあとなら、
ふたたび起動させて、ウインドウを表示させることができます。
 普通の正常なアプリケーションでは、再度アイコンをダブルクリック
すると、ウインドウが表示されます。Interface Builder での操作時に、
どこか一箇所繋がなかったか、つなぎ間違いなどがあったとおもわれます。
 どのあたりに原因があるか、けんとうがつく方がいらしたら教えて
いただけないでしょうか。よろしくお願いいたします。

copy2CB は、下記URLで、source付きで公開しています。
   http://www.ne.jp/asahi/kazuo/sasagawa/


MATSUMOTO Satoshi

unread,
Feb 8, 2010, 4:45:55 PM2/8/10
to cocoa-d...@googlegroups.com
松本です。

アプリケーションの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

kssgw

unread,
Feb 9, 2010, 10:39:25 AM2/9/10
to cocoa-dev-japan
松本さん、早速の投稿ありがとうございました。


下記の構文を追加して、コンパイルしてみました。しかし状態はかわりませんでした。


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>

MATSUMOTO Satoshi

unread,
Feb 9, 2010, 9:41:16 PM2/9/10
to cocoa-d...@googlegroups.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>

kssgw

unread,
Feb 10, 2010, 2:47:17 AM2/10/10
to cocoa-dev-japan
松本さんの指摘のように、以下の通り構文を追加して、コンパイルしてみました。
正常に作動しました。


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
>
> -----------------------------------------------------

Reply all
Reply to author
Forward
0 new messages