在我的应用程序中,我有一个视图,这是一个有很多输入的表单。
当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
答案 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事件,例如内部触摸(或更合适的内容)。