UIApplicationを継承すると、アプリケーションで発生するいろいろなイベントが受け取れます。
継承した独自のUIApplicationクラスを使用するには、Other Sourcesにある、main.mを以下のように書き換えます。
int main(int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, @"MyApplication", @"MyAppDelegate"); [pool release]; return retVal; }
UIApplicationMain関数の第3引数に、UIApplicationを継承したクラス名を指定します。
第4引数はUIApplicationDelegateクラスを指定します。
このクラスで、適切なメソッドをオーバーライドすると、各種のイベントの発生に対応できます。
例えばロック・スリープに移行するときには、以下のメソッドが呼ばれます。
- (void)applicationWillSuspend;
ロック・スリープになるタイミングで呼ばれるメソッドには、UIApplicationDelegateのapplicationWillResignActive:メソッドがありますが、このメソッドは、ホームボタンをダブルタップ(曲の再生中は iPodの操作パネルが表示される)でも呼ばれてしまうので、あまり使えないのです。
また、ステータスバーをタッチしたときには、以下のメソッドがそれぞれ呼ばれます。
- (void)statusBarMouseDown:(struct __GSEvent *)fp8; - (void)statusBarMouseDragged:(struct __GSEvent *)fp8; - (void)statusBarMouseUp:(struct __GSEvent *)fp8;
それ以外のメソッドについては下記等を参考にしてください。
http://ericasadun.com/iPhoneDocs220/_u_i_application_8h-source.html
調べてみるとボリュームが変化したときに呼ばれるメソッドなどもあり、面白いのですが、これらのメソッドはUndocumented APIとなりますので、審査に通らない可能性があります。