我在某个CA层上点击时动态创建了两个UITextFields。我已将第一个文本字段设置为第一个响应者,我想要的是,当我在第一个文本字段中输入文本并按完成时,我希望第二个文本字段成为第一个响应者。这就是我在textFieldShouldReturn中为此所做的。
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (titleField.returnKeyType== UIReturnKeyDone) {
NSString *title = [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if (title.length>0 )
{
[self changeLayersTitle:title];
}
[dateField becomeFirstResponder];
if (dateField.returnKeyType==UIReturnKeyDone)
{
NSString *date = [dateField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if (date.length>0)
{
[self changeLayersDate:date];
}
}
[dateField resignFirstResponder];
[bgLayer removeFromSuperlayer];
[titleField removeFromSuperview];
[dateField removeFromSuperview];
}
return NO;
}
现在,当我在第一个文本中输入文本后按完成时,它关闭了两个文本字段,bt 向我显示了键盘。那么,我错过了什么或做错了什么,还是我必须把它放在别的地方。请帮帮我。
我不确定您为什么要比较文本字段的 returnKeyType
属性。您应该比较文本字段的相等性,如果对第一个文本字段按下了回车键,则使第二个文本字段成为新的响应者。
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (textField == titleField) {
[dateField becomeFirstResponder];
}
else if (textField == dateField) {
// Return button pressed on 2nd field. Do something
}
return YES;
}
在您的完成按钮回调方法中,您不能将第二个文本字段设置为第一个响应者吗?
您无需在第一个文本字段中辞职第一响应者。