带有一个文本字段的 UIAlertView(用于登录目的)
Posted
技术标签:
【中文标题】带有一个文本字段的 UIAlertView(用于登录目的)【英文标题】:UIAlertView with one text field (for login purpose) 【发布时间】:2014-01-04 07:54:14 【问题描述】:当我将tableView
向下拉时,alertView
应该会出现一个登录文本字段。
警报必须来,但不能选择 textField
。
一旦我点击这个textField
,就会出现键盘。
为此,我正在使用此代码:
- (void)toggleCells:(UIRefreshControl*)refreshControl
message = [[UIAlertView alloc] initWithTitle:@"Create a new list"
message:@""
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK", nil];
[message setAlertViewStyle:UIAlertViewStylePlainTextInput];
[message setTag:1001];
//[message textFieldAtIndex:0].delegate = self;
[refreshControl beginRefreshing];
[message show];
[refreshControl endRefreshing];
//...
【问题讨论】:
所以...textField
在显示alertView
后立即被选中。这是你的问题吗?还有其他问题吗?一个快速修复可以是:[[message textFieldAtIndex:0] resignFirstResponder];
(但是,是的,这种技术很烂)
我曾经这样使用过,但是第一个键盘出现了,然后在它隐藏之后......我不想这样出现......第一个警报必须出现在视图的中心......当我选择警报视图上的文本字段,然后警报必须向上移动..然后键盘必须出现...
【参考方案1】:
尝试:(不是很好,但可以快速修复)
message = [[UIAlertView alloc] initWithTitle:@"Create a new list"
message:nil
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK", nil];
[message setAlertViewStyle:UIAlertViewStylePlainTextInput];
[message setTag:1001];
[[message textFieldAtIndex:0] setDelegate:self]; //you'll surely need it later
[message show];
[[message textFieldAtIndex:0] resignFirstResponder]; //after showing the alertView
注意:上面的方法不是很好。
替代方法:
注意:在.h
中声明“BOOL skipAlertTextField;
”
- (void)toggleCells:(UIRefreshControl*)refreshControl
//...
message = [[UIAlertView alloc] initWithTitle:@"Create a new list"
message:nil
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK", nil];
[message setAlertViewStyle:UIAlertViewStylePlainTextInput];
[message setTag:1001];
[[message textFieldAtIndex:0] setDelegate:self];
skipAlertTextField = YES; //important
[message show];
//...
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
if(textField.tag == 1001 && skipAlertTextField)
skipAlertTextField = NO;
return NO;
return YES;
【讨论】:
ok yar..工作正常。但是 alertview 没有出现在中心..它出现时显示在顶部.. @gajendra:嗯...alertView
没有居中。似乎是个问题。无论如何... 更新答案 使用替代技术
@gajendra :当然,我会检查,但这个答案有帮助吗?【参考方案2】:
试试这个
UIAlertView *av = [[UIAlertView alloc]initWithTitle:@"SayWhat" message:@"Please enter Email address" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];
av.alertViewStyle = UIAlertViewStylePlainTextInput;
[av setAlertViewStyle:UIAlertViewStylePlainTextInput];
[[av textFieldAtIndex:0] setPlaceholder:@"Email address"];
[[av textFieldAtIndex:0] setDelegate:self];
[av show];
[[av textFieldAtIndex:0] resignFirstResponder];
【讨论】:
当警报视图出现时,文本字段被平行选中,键盘也出现了..我不想这样..首先警报视图必须来。一旦我选择了 uialertview 上的文本字段,那么键盘必须出现..以上是关于带有一个文本字段的 UIAlertView(用于登录目的)的主要内容,如果未能解决你的问题,请参考以下文章
用于自定义视图的 iOS7 UIAlertView 样式对话框