キーボード ハンドルを簡単にするために、 IQKeyboardManager フレームワークを実装しました。1つのことを除いて、非常にうまく機能します:
UItextField
私のアプリには、デフォルトのキーボードの代わりに開くコントロールがいくつかありますUIDatePicker
(例: 数字パッド、小数点パッド、ASCII 対応など)。
グラフィカルな結果を含むコード サンプルを次に示します。
// Create the datePicker
UIDatePicker *birthdayDatePicker = [UIDatePicker new];
[birthdayDatePicker setDatePickerMode:UIDatePickerModeDate];
// Assign the datePicker to the textField
[myTextField setInputView:birthdayDatePicker];
私の質問は、 「OK」ボタン のアクションを処理して「Date de naissance」フィールドに入力することは可能ですか?
編集 :
私がどのように問題を解決したか知りたい人のために:
私の.hで、インポートしました
IQDropDownTextField.h
:#import "IQDropDownTextField.h"
.hで、 my のタイプを次のように変更し
UITextField
ましたIQDropDownTextField
。@property (weak, nonatomic) IBOutlet IQDropDownTextField *myTextField;
Interface Builder または .xib でフィールドを選択し、Identity Inspector を表示します。フィールドのクラスを に変更します
IQDropDownTextField
。
Mohd Iftekhar Qurashiのコメントによると、次の 2 つの点は次のコードで回避できます。
// Set myTextField's dropDownMode to IQDropDownModeDatePicker
myTextField.dropDownMode = IQDropDownModeDatePicker;
// Create a dateFormatter
NSDateFormatter *df = [NSDateFormatter new];
[df setDateFormat:@"dd/MM/yyyy"];
// Assign the previously created dateFormatter to myTextField
myTextField.dateFormatter = df;
// Assign a minimum date and/or maximum date if you want
myTextField.minimumDate = [NSDate date];
myTextField.maximumDate = [NSDate date];
// That's all !
.mに、メソッドを追加しました
setCustomDoneTarget:action:
:// Create the datePicker UIDatePicker *birthdayDatePicker = [UIDatePicker new]; [birthdayDatePicker setDatePickerMode:UIDatePickerModeDate]; // Assign the datePicker to the textField [myTextField setInputView:birthdayDatePicker]; // Just added this line [myTextField setCustomDoneTarget:self action:@selector(doneAction:)];
.mに、メソッドを追加しました
doneAction:
:- (void)doneAction:(UITextField *)textField { [myTextField setText:[DateHelper getStringFromDate:birthdayDatePicker.date format:@"dd/MM/yyyy" useGmt:NO]]; // getStringFromDate:format:useGmt: is a method to convert a NSDate to a NSString according to the date format I want }