2010-11-20 13 views
0

私は長いメッセージを表示するには、単純なアラートを使用していると私は、次のように警告を扱う:iphone UIAlertViewのフォーカス問題

 

bool  hold_alert = true; 
UIAlertView * malert = [[UIAlertView alloc]....create the alert 
[malert show]; 
while(hold_alert) 
{//hold the application focus on the alert, when alert triggers the function with "clickedButtonAtIndex" i set hold_alert to false 
    CFRunLoopRunInMode(kCFRunLoopDefaultMode,0.05,false); 
} 
[malert removeFromSuperView]; 
[my_window becomeFirstResponder]; 
... release alert and stuff , and carry on... 
 

問題は、このコードは私のアプリケーションにフォーカスを解放しないということです。興味深いことに、私がbreakepointsを使用してデバッガでこのコードを実行すると、コントロールは正常にアプリケーションに復元されます。 これをどのように修正できますか?

ありがとう、 Raxvan。

答えて

1

その

しかし、おそらく

-(void)presentAlert 
{ 
UIAlertView * malert = UIAlertView *aview = [[[UIAlertView alloc] initWithTitle:@"Blah" message:@"blah blah" cancelButtonTitle:@"OK" delegate:self otherButtonTitles:nil] autorelease];                                                  
[malert show]; 
} 

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex) { foo } 
} 

は、経営管理論の残りの部分は関連して、あなたのために行われているようにあなたが欲しいものです...あなたがここに実行ループ機能と達成したいものを少しは不明メモリとビューに彼らは明示的に警告に焦点を当てる必要はありません。

アラートはあなたがのように繰り返しタイマーを発射可能性がアップした間、あなたがやってみたかった何かがあった場合。

-(void)presentAlert 
    { 
    UIAlertView * malert = UIAlertView *aview = [[[UIAlertView alloc] initWithTitle:@"Blah" message:@"blah blah" cancelButtonTitle:@"OK" delegate:self otherButtonTitles:nil] autorelease];                                                  
    [malert show]; 
    iTimer = [[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(doStuff:) userInfo:nil repeats:YES] retain]; 

    } 

    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
    { 
    [iTimer invalidate]; 
    [iTimer release]; 
    if (buttonIndex) { //foo } 
    } 

    -(void)doStuff:(NSTimer *)aTimer 
    { 
     //bar 
    }