我在某个CA层上轻触时动态创建了两个UITextField。我把第一个文本字段作为第一个响应者,我想要的是,当我在第一个Textfield中输入文本并按完成时,我希望第二个文本字段成为第一个响应者。 这就是我在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;
}
现在,当我在第一个文本中输入文本后进入按Done时,它解除了两个文本字段,bt显示键盘。 那么,我错过了什么或做错了什么,或者我必须把它放在其他地方。请帮帮我。
答案 0 :(得分:2)
我不确定您为什么要比较文本字段的returnKeyType
属性。您应该比较文本字段是否相等,如果在第一个文本字段上按下了返回键,则将第二个文本字段作为新响应者。
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (textField == titleField) {
[dateField becomeFirstResponder];
}
else if (textField == dateField) {
// Return button pressed on 2nd field. Do something
}
return YES;
}
答案 1 :(得分:0)
在完成按钮的回调方法中,您不能只将第二个文本字段设置为第一个响应者吗?
您不需要在第一个文本字段中使用resignFirstResponder。