resignFirstResponder不会隐藏键盘

时间:2013-07-22 07:09:00

标签: objective-c uitextfield uialertview

我试图在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按钮时,才能执行此方法。

2 个答案:

答案 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;

}