UITextfieldsのinputAccessoryViewにツールバーがあります。「次へ」ボタンを押すと、すべてのテキストフィールドのorderedSet内の次のテキストフィールドが最初のレスポンダーになります。それは完璧に機能します。
しかし、「前の」テキストフィールドを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になることです。レスポンダーのリストに追加されていて、順番になったように…。