TextField覆盖UIAlertView的按钮

时间:2011-01-08 19:20:45

标签: iphone objective-c cocoa-touch uialertview

我正在使用带有三个按钮的UIAlertView:“Dismiss”,“Submit Score”和@“View Leaderboard”。 UIAlertView还包含一个名为username的UITextField。目前,UITextField“用户名”正在覆盖UIAlertView中的一个按钮。我只想知道如何阻止UITextField覆盖其中一个按钮,即按下按钮。

以下是正在发生的事情的图像:

screenshot http://img684.imageshack.us/img684/3055/screenshot20110108at191.png

这是我的代码:

[username setBackgroundColor:[UIColor whiteColor]];
[username setBorderStyle:UITextBorderStyleRoundRect];
username.backgroundColor = [UIColor clearColor];
username.returnKeyType = UIReturnKeyDone;
username.keyboardAppearance = UIKeyboardAppearanceAlert;
username.placeholder = @"Enter your name here";
username = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)];
username.borderStyle = UITextBorderStyleRoundedRect;
[username resignFirstResponder];

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Congratulations" 
                                                message:[NSString stringWithFormat:@"You tapped %i times in %i seconds!\n", tapAmount, originalCountdownTime] 
                                               delegate:self 
                                      cancelButtonTitle:@"Dismiss" 
                                      otherButtonTitles:@"Submit To High Score Leaderboard", @"View Leaderboard", nil];
alert.tag = 01;
[alert addSubview:username];
[alert show];
[alert release];

4 个答案:

答案 0 :(得分:3)

我认为您需要在消息字符串的末尾添加一些新行和最后一个空格。

[NSString stringWithFormat:@"You tapped %i times in %i seconds!\n\n\n ", tapAmount, originalCountdownTime]

答案 1 :(得分:1)

这是一个UIAlertView替换类,支持用户输入,自定义宽度等:

https://github.com/TomSwift/TSAlertView

答案 2 :(得分:0)

我有同样的问题,你的代码有以下条件

[alert addSubview:username];
[alert show];

在[alert show]之后添加UITextfield;如

 [NSString stringWithFormat:@"You tapped %i times in %i seconds!\n\n\n ", tapAmount, originalCountdownTime];
 [alert show];
 [alert addSubview:username];

多数民众赞成。工作正常。

答案 3 :(得分:-1)

您不应该以这种方式使用UIAlertView。它从未打算用于此类用户交互和查看自定义:

From the iOS Human Interface Guidelines:

  

您可以在警报中指定所需标题和可选消息的文本,按钮数量以及按钮内容。您无法自定义警报视图本身的宽度或背景外观,也无法自定义文本的对齐方式(中心对齐)。

或许考虑建立一个自定义视图?