5

我有一个带有 3 个按钮和文本(标签而不是文本视图)的警报视图,如果我将它们全部塞在一起,那么这个微小的滚动文本会变得难看,所有按钮都占据了大部分空间。有谁知道如何解决这一问题?

4

4 回答 4

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];
于 2013-01-11T17:54:19.223 回答
5

向下移动文本视图的一种简单方法是添加一条消息

[alertViewObject setMessage:@"\n"];

你的框架没有生效的原因是 -show 在开始动画之前设置框架并创建视图层次结构。您还应该使文本视图成为第一响应者,以便弹出键盘。

使用以下代码自定义您的 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]; 

我希望这能帮到您。

于 2013-01-11T18:04:42.997 回答
0

我建议你制作两个 uiaertviews 然后使用

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

检查单击了哪个警报视图。如果您真的需要 uialertview,否则下面的答案也很棒。

详细的:

  1. 将 uialertview 委托添加到您的视图控制器:

    @interface ViewController : UIViewController <UIAlertViewDelegate>    
    
  2. 创建 2 个 alertView 时,它应该如下所示:

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

第二个:

    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
    }
    }
    
于 2013-01-11T17:57:34.903 回答
0

UIAlertView 在 iOS 9.0 中已被弃用。改用 UIAlertController 和 UIAlertControllerStyleAlert 的preferredStyle。

    let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)

    alertController.addAction(UIAlertAction(title: "AlertAction 0", style: .default, handler: { (alertAction: UIAlertAction) in
        print("0")
    }))

    alertController.addAction(UIAlertAction(title: "AlertAction 1", style: .default, handler: { (alertAction: UIAlertAction) in
        print("1")
    }))

    alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (alertAction: UIAlertAction) in
        print("cancel")
    }))
于 2019-01-22T16:18:30.930 回答