10

キーボード ハンドルを簡単にするために、 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
    }
    
4

1 に答える 1