我的 UITextfields 的 inputAccessoryView 中有一个工具栏。如果点击“下一个”按钮,它会使我所有文本字段的有序集中的下一个文本字段成为第一响应者。效果很好。
但我无法让“以前的”文本字段成为FirstResponder。
我已经在控制台中进行了检查,并且文本字段确实调用了 textFieldShouldBeginEditing 并且我返回 YES,但它从不调用 textFieldDidBeginEditing,并且应该 resignFirstResponder 的文本字段从不调用 textFieldShouldEndEditing。
因此,文本字段正在获取成为成为FirstResponder 的消息,但没有。
- (IBAction)keyboardBarButtonDidTouch:(UIBarButtonItem *)sender
{
if (sender==self.previousBarButton&&self.activeTextFieldArrayIndex.intValue>0)
{
[(UITextField *)[self.textfields objectAtIndex:(self.activeTextFieldArrayIndex.intValue-1)] becomeFirstResponder];
}
if (sender==self.nextBarButton&&self.activeTextFieldArrayIndex.intValue<(self.textfields.count-1))
{
[(UITextField *)[self.textfields objectAtIndex:(self.activeTextFieldArrayIndex.intValue+1)] becomeFirstResponder];
}
if (sender==self.doneBarButton)
{
[self.activeTextField resignFirstResponder];
}
}
最奇怪的是,如果我通过某些操作强制文本字段 resignFirstResponder,那么“以前的”文本字段会突然变成 FirstResponder。就像它被添加到响应者列表中一样,轮到它了……