iOS iPad应用程序不隐藏键盘
Posted
技术标签:
【中文标题】iOS iPad应用程序不隐藏键盘【英文标题】:iOS iPad app not hiding keyboard 【发布时间】:2012-06-29 02:39:58 【问题描述】:在我的应用程序中,我有一个视图,它是一个有很多输入的表单。
当 UITextField 调用textFieldDidBeginEditing
时,它会检查标签并根据输入的含义显示 UIPopoverController 或键盘。
如果键盘打开,我需要它在用户按下弹出弹出框的文本字段时消失。但是我不能让它消失,我已经尝试了各种方法来摆脱键盘,但它只是留在那里。我试过了:
在textFieldDidEndEditing
中调用resignFirstResponder
在textFieldDidEndEditing
中调用[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应用程序不隐藏键盘的主要内容,如果未能解决你的问题,请参考以下文章