3

ユーザーがX時間非アクティブになった後(タッチイベントが発生しなかった場合)、ストーリーボードの最初のビューコントローラーに戻りたい。いくつかの調査の結果、非アクティブを検出する最も一般的な方法は、NSTimerを起動し、イベントが発生したときに間隔をリセットすることであることがわかりました。発生したイベントを検出するには、UIApplicationのサブクラスで[UIApplication sendEvent:]をオーバーライドします。これは私がちょっと立ち往生している部分です。

私はこのプロジェクトを参考として見ています

http://www.icodeblog.com/2011/09/19/timing-out-an-application-due-to-inactivity/

https://github.com/elc/ELCUIApplication

ストーリーボードを操作するときに同様の機能を実装する方法がわかりません。そのgithubプロジェクトに似たものを試しました。UIApplicationのサブクラスである新しいクラスを作成し、必要なメソッドをオーバーライドして、最後にメイン関数のターゲットクラスを変更しました(私のappdelegateからUIApplicationをサブクラス化した新しいクラスに)。そうすることで、次のエラーが発生しました

メインストーリーボードファイルを使用する場合、アプリデリゲートはwindowプロパティを実装する必要があります。

githubのappDelegateはNSObjectのサブクラスであり、私が理解していることから彼のwindowプロパティの初期ビューを手動でロードしますが、私のappDelegateはUIResponderのサブクラスであり、それ自体がUIApplicationのスーパークラスです。続行する方法がわかりません。AppDelegateにwindowプロパティがあり、合成されていますが、どうすればよいかわかりません。

どんな助けでも大歓迎です!

4

1 に答える 1

12

間違った引数をに変更したようですUIApplicationMain

のデフォルトの呼び出しはUIApplicationMain次のようになります。

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

3番目の引数(nilデフォルト)は、UIApplication使用するクラスの名前です。nilの場合、アプリはを使用しUIApplicationます。

4番目の引数は、UIApplicationDelegate使用するクラスの名前です。

4番目の引数を変更したように聞こえますが、3番目の引数を変更する必要があります。

return UIApplicationMain(argc, argv,
    NSStringFromClass([MyApplication class]),
    NSStringFromClass([AppDelegate class]));
于 2012-11-02T19:09:36.593 に答える