3

アプリの実行中にiPhoneがスリープ状態にならないようにする方法についてよく読んでいますが、何も機能しなかったため、現時点では非常に不満です..

ここで、30秒ごとにタイマーを設定してidleTimerDisabledをNOに設定してからYESに設定するというアイデアについて読みましたが、私のobjCはまだそれほど良くありません。誰か教えてくれませんか?

thnx!

編集:これが私が試したコードです:

- (void)applicationDidFinishLaunching:(UIApplication *)application
{   
    [ super applicationDidFinishLaunching:application ];
    //application.idleTimerDisabled = NO;
    //application.idleTimerDisabled = YES;
    //[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
    [UIApplication sharedApplication].idleTimerDisabled = NO;
    [UIApplication sharedApplication].idleTimerDisabled = YES;


}

edit2:その後、ループを開始しようとしました:

-(void)_timerLoop
{
    // add this function up the top.  it's what will happen when the
    // timer goes off:
    NSLog(@"Your timer went off!!!");
}


/**
 * This is main kick off after the app inits, the views and Settings are setup here.
 */
- (void)applicationDidFinishLaunching:(UIApplication *)application
{   
    [ super applicationDidFinishLaunching:application ];
    //application.idleTimerDisabled = NO;
    //application.idleTimerDisabled = YES;
    //[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
    //[UIApplication sharedApplication].idleTimerDisabled = NO;
    //[UIApplication sharedApplication].idleTimerDisabled = YES;
    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(_timerLoop) userInfo:nil repeats:YES];


}

edit3: 誤って反対票を変更することは本当にできませんか? stackoverflow システムへの素晴らしい変更要求になるでしょう!

4

2 に答える 2

3

タイマーの使用に関する質問について:

タイマーを 30 秒後に (1 回だけ) オフにする方法は次のとおりです。

-(void)_jump
{
// add this function up the top.  it's what will happen when the
// timer goes off:
NSLog(@"Your timer went off!!!");
}
...
// here's how to create the timer, which will go off in 30 seconds
[NSTimer scheduledTimerWithTimeInterval:30.0
   target:self selector:@selector(_jump) userInfo:nil repeats:NO]

2 つの異なるタイマーが必要な場合は、たとえば 30 秒後と 60 秒後に、同じ方法で 2 つ作成します。タイマーについてさらにサポートが必要な場合はお知らせください。


これ以上簡単なことはありません。次の行を追加するだけです:

application.idleTimerDisabled = YES;

「application didFinishLaunchingWithOptions」ルーチン内。

そのルーチンは、アプリ デリゲート.m ソース コード ファイル内にあります。

「return YES;」のに必ず追加してください。ステートメント - よくある間違いです。したがって、次のようになります。

-(BOOL)application:(UIApplication *)application
            didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    // blah blah ...

    application.idleTimerDisabled = YES;
    return YES;
    }
于 2011-04-28T20:02:33.390 に答える
1

[UIApplication sharedApplication].idleTimerDisabled = YES; を設定するだけです。の

  • (BOOL) アプリケーション:(UIApplication*)アプリケーション didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

私にとってはうまくいきます。ただし、注意点があります。phonegap アプリからカメラ ユーティリティを呼び出してスナップショットを撮るたびに、idleTimerDisable が舞台裏で NO に設定されることに気付きました。画像をアップロードした直後に、次のコード行を再度呼び出しました。

[UIApplication sharedApplication].idleTimerDisabled = YES;

また、アプリ全体でアイドル タイマーが再び有効になる場所が増えても驚かないでしょう。

于 2012-07-27T14:16:13.270 に答える