iOS iPad应用程序不隐藏键盘

Posted

技术标签:

【中文标题】iOS iPad应用程序不隐藏键盘【英文标题】:iOS iPad app not hiding keyboard 【发布时间】:2012-06-29 02:39:58 【问题描述】:

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

如果键盘打开,我需要它在用户按下弹出弹出框的文本字段时消失。但是我不能让它消失,我已经尝试了各种方法来摆脱键盘,但它只是留在那里。我试过了:

textFieldDidEndEditing 中调用resignFirstRespondertextFieldDidEndEditing 中调用[self.view endEditing:YES]textFieldDidBeginEditing 中调用resignFirstResponder AND [self.view endEditing:YES] 检查前一个标签相当于键盘输入文本字段。

任何想法都会很棒。

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

【问题讨论】:

iPad keyboard will not dismiss if modal view controller presentation style is UIModalPresentationFormSheet的可能重复 【参考方案1】:

在 .h 文件中声明一个全局 UITextField

UITextField *txtfld;

将您的方法 textFieldDidBeginEditing 替换为 textFieldShouldBeginEditing 并现在编写此代码

- (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;    


【讨论】:

谢谢你。我接受了这个想法并简化了它,它很有效。不知道为什么我的方法不起作用......【参考方案2】:

要在用户触摸打开它的 textField 时关闭键盘,请添加此方法:

- (IBAction)dismissKeyboard:(id)sender 

    [textField resignFirstResponder];

在 Interface Builder 中,将此方法连接到您想要的 textField 事件,例如在内部进行修饰(或任何更合适的方法)。

【讨论】:

我希望键盘在用户触摸另一个 UITextField(不是同一个文本字段)时消失。无论如何我试了一下,但我没有使用 Interface Builder,我补充说:[tf3 addTarget:self action:@selector(dismissKeyboard) forControlEvents: UIControlEventTouchUpInside];) 但这并没有触发事件。 如果您希望在触摸另一个 TextField 时将其关闭,这应该会更容易,因为您可以将该文本字段链接到在 IB 中关闭键盘的方法。我不确定将“Touch Up Inside”事件链接到该方法的非 IB 方式。尝试 NSLog 以确保事件被触发,也许它是但键盘没有被关闭。 这就是我使用 UITextFieldDelegate 和 textFieldDidBeginEditing 和 textFieldDidEndEditing 所做的。但它没有工作.......

以上是关于iOS iPad应用程序不隐藏键盘的主要内容,如果未能解决你的问题,请参考以下文章

如何使用JavaScript捕获iOS上的隐藏键盘事件

有没有办法在 Safari(网络浏览器)上隐藏 iPad 键盘

输入焦点时隐藏ios设备上的键盘

单击文档正文时隐藏 iPad 键盘

UIWebView 被键盘隐藏

隐藏 Ipad 的键盘,但仍然可以通过自定义键盘进入输入字段