2010-11-20 12 views
0

ich bin eine einfache Benachrichtigung für eine lange Nachricht anzuzeigen, und ich behandeln die Warnung auf folgende Weise:iphone UIAlertView Fokus Problem

 

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... 
 

Das Problem ist, dass dieser Code den Fokus nicht auf meine Anwendung freigeben wird . Interessanterweise wird das Steuerelement erfolgreich in meiner Anwendung wiederhergestellt, wenn ich diesen Codeabschnitt im Debugger unter Verwendung von Breakeepoints ausführen. Wie kann ich das beheben?

Danke, Raxvan.

Antwort

1

Es ist ein wenig unklar, was Sie hier mit der Runloop Funktion erreichen wollen ...

Aber vielleicht

-(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 } 
} 

Ist das, was Sie wollen, wie der Rest der managment für Sie in Bezug erfolgt zu Erinnerungen und Ansichten. Es besteht keine Notwendigkeit, den Fokus explizit auf die Warnung zu richten.

Wenn es etwas, was Sie tun wollte, während der Alarm nach oben war man eine sich wiederholende Timer wie in abfeuern konnte.

-(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 
    }