我试图在UIAlertView中包含一个UITextField,代码如下:
UIAlertView *newLabel = [[UIAlertView alloc]initWithTitle:@"New Label" message:@"\n" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
UITextField *newLabelNameField = [[UITextField alloc]initWithFrame:CGRectMake(12.0, 45.0, 260.5, 25.0)];
newLabelNameField.placeholder = @"Label Name";
[newLabelNameField setBackgroundColor:[UIColor whiteColor]];
[newLabelNameField resignFirstResponder];
[newLabel addSubview:newLabelNameField];
[newLabel show];
我面临的主要问题是resignFirstResponder
无效,即按下返回键时键盘没有隐藏。
其次,我们可以编写一个在按下OK
按钮时必须执行的方法,比如将使用文本字段接收的Label Name
添加到数据库。只有当我们按下OK
按钮而不是Cancel
按钮时,才能执行此方法。
答案 0 :(得分:2)
1)对于第二个问题,首先将一些标记设置为UIAlertView
,如newLabel.tag = 5
;
2)然后通过检查UIAlertView
&编写tag
的以下委托方法。 buttonindex
。
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (alertView.tag == 5 && buttonIndex == 1)//OK button clicked
{
//Write code
}
}
3)对于第一个问题,请编写UITextField
的委托方法,如
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
答案 1 :(得分:1)
为什么不在UIAlertview中使用默认文本字段尝试一次,
UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:@"Save" message:@"Please Enter the Name" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
[alertView setAlertViewStyle:UIAlertViewStylePlainTextInput];
[alertView show];
编辑:您在此处获取数据
- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{
NSLog(%@"[[alertView textFieldAtIndex:0] text]");
return ([[[alertView textFieldAtIndex:0] text] length]>0)?YES:NO;
}