我目前正在创建一个带有UITextField的UITableViewCell。 单击文本字段,我想调出我创建的数字键盘。当我输入时,文本字段应该为我检查输入;点击其他地方,键盘应该被解雇。
代码:
UITableViewCell *sizeCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"sizeCell"];
sizeCell.textLabel.text = @"Size";
UITextField* sizeField = [[UITextField alloc] initWithFrame:CGRectMake(185, 10, 100, 28)];
sizeField.text = @"0";
sizeField.textAlignment = UITextAlignmentRight;
sizeField.textColor = [UIColor colorWithRed:50.0/255.0 green:79.0/255.0 blue:133.0/255.0 alpha:1.0f];
sizeField.backgroundColor = [UIColor clearColor];
sizeField.keyboardType = UIKeyboardTypeDecimalPad;
[sizeCell.contentView addSubview:sizeField];
rows = [[NSArray arrayWithObjects:switchCell, typeCell, sizeCell, nil] retain];
我尝试实现UITextFieldDelegate,如:
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
[sizeField resignFirstResponder];
return YES;
}
但键盘不会消失......
如何验证输入并关闭键盘?
答案 0 :(得分:3)
您永远不会在文本字段中设置委托,以便调用textFieldShouldReturn:
。确保您的班级符合UITextFieldDelegate
,然后执行以下操作:
...
UITextField* sizeField = [[UITextField alloc] initWithFrame:CGRectMake(185, 10, 100, 28)];
sizeField.delegate = self; //This is important!
sizeField.text = @"0";
...
答案 1 :(得分:0)
一些观察结果:
...ShouldReturn
方法。 sizeField
,然后从该范围之外的其他方法调用它。我假设您有一个名为sizeField
的类变量,或者您将收到编译器错误。但是,当你进行设置时再次声明它就像阴影类变量声明那样它永远不会被设置。顺便说一句,那是内存泄漏。 [textField resign...]
代替[sizeField resign...]
。至少你应该assert(textField == sizeField)
。