アクティブな(フォーカスのある)UITextFieldを取得する方法

http://d.hatena.ne.jp/shunsuk/20091127/1259325178

なるほど、これを読んで目からウロコでした。
iPhoneのテンキー(UIKeyboardTypeNumberPad)って「DONE」ボタンがないでしょ?
http://d.hatena.ne.jp/manmarina/20100621/1277101067
これに「DONE」ボタンを付けたとき、キーボードを引っ込むようにしたかったんだけど、アクティブなUITextFieldを取得する方法がわからなかったんですよね。通常のキーボードなら、引数に(UITextField *)textFieldがあるので、

[textField resignFirstResponder];

とすればいいけど、「DONE」ボタンはオリジナルのメソッドをトリガーするので、何らかの方法でアクティブUITextFieldを取得しなければなりません。どうしたもんか…、途方に暮れていたときに見つけたのが上記の記事。なるほど、その手がありましたか。

ヘッダで宣言しておいた、

UITextfield *activeField;

に、UITextFieldがアクティブになったときに、delegateメソッドにてtextFieldへのポインタを格納。

- (void)textFieldDidBeginEditing:(UITextField *)textField {
	activeField = textField;
}

そして、「DONE」ボタンをクリックしたときにトリガーされるメソッドに、

- (void)doneButton:(id)sender {
	[activeField resignFirstResponder];
}

などと記述すればよいのですね〜。たしかに正攻法ではないけど、シンプルでわかりやすい方法です。