2013-01-11 11 views
5

Ich habe eine Alertview mit 3 Tasten und Text (Label und nicht textView) Wenn ich alles zusammen Marmelade, wird es mit diesem kleinen Scroll-Text hässlich und alle Tasten nehmen die meisten der Raum. Kann jemand das beheben?UIALertView mehrere Tasten mit Text

Antwort

7

Warum versuchen Sie nicht, eine benutzerdefinierte Ansicht dafür zu erstellen.

Sie verwenden können, wie Sie anpassen möchten, Größe, Farbe, Hintergrund etc.

und zeigen Sie es als modaler Fenster/Ansicht.


Wenn Sie noch Alertview verwenden möchten, dann können Sie Abstand geben, wie:

UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Title" message:@"\n\n!\n\n\n\n" delegate:self cancelButtonTitle:@"Button 1" otherButtonTitles:@"Button 2",@"Button 3", nil]; 
[alert show]; 
+0

Danke für eine großartige Antwort, aber da ich neu bei Objective-C bin, habe ich noch nicht mehrere Ansichten verwendet, aber immer noch eine gute Antwort (ich wünschte, ich könnte abstimmen ..) – user1970792

+0

Was ist mit meiner 2. Antwort? –

+0

Ich werde es ausprobieren – user1970792

0

Ich schlage vor, dass Sie zwei uiaertviews machen und dann

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 

verwenden die Alarmansicht überprüfen wurde geklickt. Wenn Sie wirklich eine UIALERTView benötigen, ist die Antwort unten auch großartig.

Ausführlich:

  1. einen UIAlertView Delegierten zu Ihrem View-Controller hinzufügen:

    @interface ViewController : UIViewController <UIAlertViewDelegate>  
    
  2. Wenn die 2 alertViews Schaffung es sollte wie folgt aussehen:

    UIAlertView *alert1 = [[UIAlertView alloc] initWithTitle:@"Message" message:@"the first UIAlertView" delegate: self cancelButtonTitle:@"Back" otherButtonTitle:@"More Options", nil]; 
    

und der sek ond:

UIAlertView *alert2 = [[UIAlertView alloc] initWithTitle:@"More Options" message:nil delegate:self cancelButtonTitle:@"Back" otherButtonTitle:@"Option 1", @"Option 2", @"Option 3", nil]; 
  1. In Ihrem ViewController.m hinzufügen:

    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
    
    if (alertView == alert1) { 
        [alert2 show]; 
    } 
    
    else if (alertView == alert2) {   
    
    NSString *string = [alertView buttonTitleAtIndex:buttonIndex]; 
    
    if ([string isEqualToString:@"Option 1"]) { 
    
        //Do stuff 
    
    } 
    else if ([string isEqualToString:@"Option 2"]) { 
    
        //Do something else 
    } 
    else if ([string isEqualToString:@"Option 3"]) { 
    
        //Do something 3rd 
    } 
    } 
    
+1

Warum Daumen runter? – JomanJi

5

Eine einfache Möglichkeit, den Text anzuzeigen unten zu bewegen ist, eine Nachricht hinzuzufügen

[alertViewObject setMessage:@"\n"]; 

Der Grund für Ihren Frame ist nicht wirksam ist, dass -show den Frame und cr setzt Verarbeitet die Ansichtshierarchie vor dem Start der Animation. Sie sollten den Text auch als Erstanrufbeantworter anzeigen, damit die Tastatur angezeigt wird.

Passen Sie Ihre AlertView mit dem folgenden Code an.

// Customize Alert View 
UIAlertView *alertView = [UIAlertView new]; 
alertView.title = @"Alert Title"; 


// Adding Your Buttons 
[alertView addButtonWithTitle:@"Button1"]; 
[alertView addButtonWithTitle:@"Button2"]; 
[alertView addButtonWithTitle:@"Button3"]; 
[alertView addButtonWithTitle:@"Button4"]; 


// Add a Space for Text View 
alertView.message = @"\n"; 


// View heirarchy, set its frame and begin bounce animation 
[alertView show]; 


// Set the frame 
CGRect frame = alertView.frame; 
frame.origin.y -= 100.0f; 
alertView.frame = frame; 


// Adding TextField 
UITextField* text = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)]; 
text.borderStyle = UITextBorderStyleRoundedRect; 
[alertView addSubview:text]; 
[text becomeFirstResponder]; 

Ich hoffe, das wird Ihnen helfen.

+0

cool, ich könnte es ausprobieren! – user1970792

+0

Das sieht gut aus, ist perfekt, aber ich brauche eine vorbereitete Nachricht, aber ich könnte es immer noch in einer anderen Situation verwenden. Danke, dass du dir die Zeit genommen hast und geantwortet hast! – user1970792

+0

akzeptierst du meine Ans ?? –