【发布时间】:2012-12-07 20:04:13
【问题描述】:
我有 4 个文本字段,在编辑其中的 3 个时,我想要可以正常工作的标准键盘,但在第 4 个文本字段上,我想显示一个选择轮。
直接按第 4 个文本字段时,我的代码工作正常,但如果我编辑文本字段 1-3,然后按数字 4,键盘不会删除。
任何想法为什么?以及如何解决?
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
if ([textField.text isEqualToString:selectedCountryText])
{
NSLog(@"Edit country");
[self.view endEditing:YES];
[UIView beginAnimations: @"anim" context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: 0.3f];
if (pickerVisible)
{
picker.frame = CGRectOffset(picker.frame, 0, -341);
pickerVisible = FALSE;
}
else
{
picker.frame = CGRectOffset(picker.frame, 0, 341);
pickerVisible = TRUE;
}
[UIView commitAnimations];
[self removeKeyboard];
}
else
{
if (pickerVisible)
{
//Remove picker
[UIView beginAnimations: @"anim" context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: 0.3f];
picker.frame = CGRectOffset(picker.frame, 0, -341);
[UIView commitAnimations];
pickerVisible = FALSE;
}
}
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
if ([textField.text isEqualToString:selectedCountryText])
{
//do nothing for now
}
else
{
[self.view endEditing:YES];
[self removeKeyboard];
}
}
- (void) removeKeyboard
{
[self.firstname resignFirstResponder];
[self.lastname resignFirstResponder];
[self.year resignFirstResponder];
[self.country resignFirstResponder];
}
在视图中确实加载了我设置了委托。
- (void)viewDidLoad
{
NSLog(@"viewdidload SearchSwimmerView");
// Setup the text fields..
[self.firstname setDelegate:self];
[self.firstname setReturnKeyType:UIReturnKeyDone];
[self.firstname addTarget:self action:@selector(removeKeyboard) forControlEvents:UIControlEventEditingDidEndOnExit];
[self.lastname setDelegate:self];
[self.lastname setReturnKeyType:UIReturnKeyDone];
[self.lastname addTarget:self action:@selector(removeKeyboard) forControlEvents:UIControlEventEditingDidEndOnExit];
[self.year setDelegate:self];
[self.year setReturnKeyType:UIReturnKeyDone];
[self.year addTarget:self action:@selector(removeKeyboard) forControlEvents:UIControlEventEditingDidEndOnExit];
[self.country setDelegate:self];
}
【问题讨论】:
-
如果您希望用户使用选择器进行输入,那么为什么不使用按钮而不是文本字段并根据选择器值更改其标题?
标签: ios uitextfield uipickerview uikeyboard uitextfielddelegate