私はにカスタムinputView
を設定しました。カスタムinputView
で選択したデータをUITextfield
に表示する方法が必要です。私はこれをシステムキーボードがやっているのと同じようにしたいと思っています。UITextFieldのカスタムinputView、入力をテキストフィールドに戻す方法を教えてください。
これはどのように行われているのですか?システムキーボードは、最初のレスポンダーであるUITextfield
への参照をどのように取得しますか?
私はにカスタムinputView
を設定しました。カスタムinputView
で選択したデータをUITextfield
に表示する方法が必要です。私はこれをシステムキーボードがやっているのと同じようにしたいと思っています。UITextFieldのカスタムinputView、入力をテキストフィールドに戻す方法を教えてください。
これはどのように行われているのですか?システムキーボードは、最初のレスポンダーであるUITextfield
への参照をどのように取得しますか?
システムキーボードは、最初のレスポンダであるUITextfieldへの参照をどのように取得しますか?
ただシステムに最初のレスポンダーを尋ねるだけです。残念なことに、それは私的なUIKitメソッドです(または最後にチェックしました)。最初のレスポンダーは、ビュー階層を再帰して各ビューを尋ねることで見つけることができますが、それはかなり不器用です。次に、あなたのビューでのUITextFieldのデリゲートメソッドを使用し
@property(nonatomic, assign) UITextField* target;
:
代わりに、あなたは(私はあなたの入力ビューは、カスタムUIViewのサブクラスであると仮定しています)入力画面上のテキストフィールドへのリンクを追加することができますテキストフィールドがフォーカスされているときに参照するには、コントローラ:
- (void)textFieldDidBeginEditing:(UITextField*)textField
{
if ([textField.inputView isKindOfClass:[MyInputView class]])
((MyInputView*)textField.inputView).target = textField;
}
- (void)textFieldDidEndEditing:(UITextField*)textField
{
if ([textField.inputView isKindOfClass:[MyInputView class]])
((MyInputView*)textField.inputView).target = nil;
}
偉大な答えデーヴ、それはまさに私が探していたものです、ありがとう。 –
戻ってテキストフィールドにカスタム入力ビューからの入力を送信する場合は、あなたがUITextField
が準拠UIKeyInput
プロトコルメソッドを使用します(必要がある)ことに注意してください。つまり、
- (void)deleteBackward;
- (void)insertText:(NSString *)text;
正確に言うと、「テキストフィールドに直接入力する」とはどういう意味ですか?あなたは、UITextFieldにフォーカスしたいですか? – Dion
申し訳ありませんが、私は私の説明でもっと正確だと思った。つまり、UITextFieldのinputViewプロパティをカスタム入力ビューに設定しています。だからユーザーが私のカスタムinputView上のボタンを押すと、どのように私はあなたの入力を反映するためにそのUITextfieldのテキストプロパティを変更することができるように、現在の最初のレスポンダーであるUITextfieldへの参照を取得するのですか? –