2013-01-11 76 views
5

我有一個帶3個按鈕和文本的alertview(標籤和非textView)如果我把它們全部粘在一起,它會變得醜陋,這個微小的滾動文本和所有的按鈕佔據了大部分的空間。有誰知道如何解決這一問題?UIALertView帶文本的多個按鈕

回答

7

爲什麼不嘗試爲此創建自定義視圖。

只要你想定製,大小,顏色,背景等

並顯示爲模式窗口/視圖可以使用。


如果你仍然想使用alertView那麼也可以把間距爲:

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

感謝您的一個很好的答案,但由於我是Objective-C的新手,我還沒有開始使用多個視圖,但仍然很好的答案(希望我可以投票..) – user1970792

+0

我的第二個答案呢? –

+0

我要試一試 – user1970792

0

我建議你做兩個uiaertviews然後用

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

檢查哪些警報視圖被點擊。如果你真的需要一個uialertview,否則下面的答案也很好。

詳細:

  1. 添加UIAlertView中委託給你的視圖控制器:

    @interface ViewController : UIViewController <UIAlertViewDelegate>  
    
  2. 在創建2個alertViews它應該是這樣的:

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

和sec OND:

UIAlertView *alert2 = [[UIAlertView alloc] initWithTitle:@"More Options" message:nil delegate:self cancelButtonTitle:@"Back" otherButtonTitle:@"Option 1", @"Option 2", @"Option 3", nil]; 
  1. 在你ViewController.m添加:

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

爲什麼大拇指向下? – JomanJi

5

一個簡單的方法來移動文本視圖下是添加一條消息

[alertViewObject setMessage:@"\n"]; 

你的框架沒有起作用的原因是 - 顯示框架和cr在開始動畫之前預訂視圖層次結構。您還應該使文本查看第一響應者,以便彈出鍵盤。

使用以下代碼自定義您的AlertView。

// 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]; 

我希望這會幫助你。

+0

很酷,我可以試試看! – user1970792

+0

這看起來很棒,非常完美,但我需要預先寫好的信息,但我仍然可能在另一種情況下使用它。感謝您花時間回答! – user1970792

+0

你接受我的答案嗎? –