を
他の回答者が指摘しているように、このための組み込みのメカニズムはないようです。 Nickの言うとおり、複雑なデリゲートパターンは必要ありません。むしろ、デリゲートパターンを使用しますが、デリゲートクラスは無料で入手できます。この場合は、UITextInput
プロトコルです。
は、だからあなたのキーボードは、おそらくこのようになります(とNIBを持っている)を使用すると、キーボードコントローラを作成する場合、あなたはそれにUITextInput
コンフォーマーを割り当てる
@interface ViewController : UIViewController
// use assign if < iOS 5
@property (nonatomic, weak) IBOutlet id <UITextInput> *delegate;
@end
ので、このような何か:
- (void)viewDidLoad
{
[super viewDidLoad];
HexKeyboardController *keyboardController = [[HexKeyboardController alloc] initWithNibName:@"HexKeyboardController" bundle:nil];
self.textField.inputView = keyboardController.view;
keyboardController.delegate = self.textField;
}
しかし、私は、このキーボードを一度だけ定義して、それを召喚したUITextInput
オブジェクトを "自動的に知る"ようにキーボードを得る方法がなければならないと考えました。しかし、私は役に立たないように見てきました...ビューの階層を自分でトロールしたり、代理人をリストに残さない限り(保持ループを引き起こす)、firstResponder
が誰なのかわかりません。 さらに、textField
が解放されると、HexKeyboardControllerもアンロードされるので、これはそれほど悪くありません。
私は "iOS5の場合は割当を使用する"コメントを取得しません - iOS5は保持を使用する場合、iOS5は保持サイクルからあなたを保護しません.iOS4の下の割当はiOS5の下での保持と同等ではありません。 –
こんにちは@NickLockwood、私は私の編集で24秒でパンチにあなたを打つ:)真剣に、私の謝罪、私のコードが間違っていた。 –
Heh、damn iPhoneキーボード - コメントを入力するのが遅すぎる! –