我有一个带有 3 个按钮和文本(标签而不是文本视图)的警报视图,如果我将它们全部塞在一起,那么这个微小的滚动文本会变得难看,所有按钮都占据了大部分空间。有谁知道如何解决这一问题?
问问题
13199 次
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,否则下面的答案也很棒。
详细的:
将 uialertview 委托添加到您的视图控制器:
@interface ViewController : UIViewController <UIAlertViewDelegate>
创建 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];
在您的 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 回答