2012-01-19 6 views
1

私のアプリケーションでは、ユーザーが自分の資格情報を保存した場合に最初に表示される自動ログイン画面が実装されています。その画面にはキャンセルボタンがあり、自動ログインをキャンセルしたい場合にログイン画面で別の認証情報を入力したい場合に選択することができます。iOS 5が起動する前にメソッドを保持

私はviewDidLoadでWebサービスを呼び出していますが、ユーザーがプロセスをキャンセルする時間がないため、ログインを自動的に取得するには約1秒かかります。

Webサービスコールを約3〜4秒間保留できる解決策があるかどうかを知りたいので、ユーザーはキャンセルの時間を得てからWebサービスが呼び出されます。

すべてのヘルプ感謝、ありがとう

答えて

2

はい、あなただけ即座にあなたのサービスコールを呼び出すのではなく、NSTimerを使用することができます。

使用方法の詳細については、How do I use NSTimer?を参照してください。

は:

// define a timer as instance variable in your .h file 
NSTimer *_loginTimer; 


// use timer in your .m file 
- (void) viewDidLoad { 
    // initialize timer (3 seconds) 
    _loginTimer = [[NSTimer scheduledTimerWithTimeInterval:3.0 
     target:self 
     selector:@selector(doAutoLogin) 
     userInfo:nil 
     repeats:NO] retain]; 
} 

- (void) doAutoLogin { 
    // request to perform login 
} 

- (void) cancelAutoLogin { 
    // invalidate timer 
    [_loginTimer invalidate]; 
    _loginTimer = nil; 
} 
0

あなたは

-(void)viewDidLoad 
{ 
    [self performSelector:@selector(doAutoLogin) withObject:nil afterDelay:3]; 
} 

- (void) doAutoLogin { 
    // request to perform login 
} 
+0

実際Krrishを使用することができますが、ある程度、あなたは正しいですが、この遅延の間に、ユーザプレスは、ユーザーを自動ログインボタンをキャンセルした場合資格情報を変更するためのログイン画面と、このメソッド[self performSelector:@selector(doAutoLogin)withObject:nil afterDelay:3]のバックエンドで実行されます。遅延を完了し、アプリケーションが自動ログインし、ユーザーが中断されます –

+0

はい、あなたは正しいです、残念私はその部分に気付かなかった:( – Krrish

関連する問題