iOS iPad应用程序没有隐藏键盘

时间:2012-06-29 02:39:58

标签: ios ipad uitextfield uipopovercontroller

在我的应用程序中,我有一个视图,这是一个有很多输入的表单。 当UITextField调用textFieldDidBeginEditing时,它会检查标记,并根据输入的内容显示UIPopoverController或键盘。

如果键盘已启动,当用户按下弹出窗口的文本字段时,我需要它消失。但是我不能让它消失,我已经尽力摆脱键盘,但它只是停留在那里。我试过了:

  • resignFirstResponder
  • 中致电textFieldDidEndEditing
  • [self.view endEditing:YES]
  • 中致电textFieldDidEndEditing
  • resignFirstResponder中调用[self.view endEditing:YES]textFieldDidBeginEditing检查上一个标记是否等于键盘输入文本字段。

任何想法都会很棒。

如果有人想要查看确切的行为,我已将其删除并将其放入示例项目中。 http://dl.dropbox.com/u/61692457/KB_Test.zip

2 个答案:

答案 0 :(得分:2)

在.h文件中声明全局UITextField

UITextField * txtfld;

用textFieldShouldBeginEditing替换你的方法textFieldDidBeginEditing,现在编写这段代码

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{

if (textField.tag == 1 || textField.tag==3)
{

    if(numPickerPopover == nil)
    {   

        numPicker = [[[NumPicker alloc] initWithStyle:UITableViewStylePlain] autorelease];

        numPicker.delegate = self;

        numPickerPopover = [[UIPopoverController alloc] initWithContentViewController:numPicker];
        [numPickerPopover setPopoverContentSize:CGSizeMake(60.0, 260.0f)];
    }

    [numPickerPopover presentPopoverFromRect:textField.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

    [txtfld resignFirstResponder];
    return NO;
}


if (textField.tag == 2)

{

    txtfld = textField;

    return YES;
}

return YES;    

}

答案 1 :(得分:0)

要在用户触摸启动它的textField时关闭键盘,请添加以下方法:

- (IBAction)dismissKeyboard:(id)sender {

    [textField resignFirstResponder];
}

在Interface Builder中,将此方法连接到您想要的textField事件,例如内部触摸(或更合适的内容)。