0

私がそのように設定している場合:

- (void)textFieldDidBeginEditing:(UITextField* )textField {

    if (textField.tag == 603) { 

        datePicker = [[UIDatePicker alloc]init];
        [datePicker setDatePickerMode:UIDatePickerModeDate];
        [datePicker setDate:[NSDate date]];
        [datePicker addTarget:self action:@selector(showDate:) forControlEvents:UIControlEventValueChanged];
        textField.inputView = datePicker;

    }

}

setDate メソッドで、UIPickerDate が inputView である textField を参照できますか? ややこしいですが、こんな感じです。

- (void) showDate: (UIDatePicker*) myDatePicker {

    NSDate* selected = [myDatePicker date];
    NSString* date = [selected description];
    myTextField = myDatePicker.view //I know this is not a property

}

UITapGestureRecognizer がそれを呼び出しているビューを知っているのと同じ意味で...

ウォズの説明: できますが、アプリの動的性が低下します。これは、医療機器の設置用の大きなフォームです。フォームを作成するには、要素のすべてのプロパティをディクショナリ (ラベル、タイプ (テキスト、チェックボックス、セグメント化されたコントロール)、フォーム セクションなど) に格納し、各ディクテーションを適切な順序で配列に格納します。配列ループ中にプログラムですべてをビルドします。私はUITextFieldをサブクラス化できると思います...しかし、どのテキストフィールドがinputViewを開始したかを知ることは素晴らしいことだと認めなければなりません

4

3 に答える 3

0

UITextField をサブクラス化して動作させました。

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

        self.textColor = [colorManager setColor:66.0 :66.0 :66.0];
        self.font = [UIFont fontWithName:@"Helvetica" size:18.0];
        self.backgroundColor = [UIColor whiteColor];
        self.borderStyle = UITextBorderStyleRoundedRect;
        self.returnKeyType = UIReturnKeyDone;
        self.userInteractionEnabled = YES;

        datePicker = [[UIDatePicker alloc]init];
        [datePicker setDatePickerMode:UIDatePickerModeDate];
        [datePicker setDate:[NSDate date]];
        [datePicker addTarget:self action:@selector(setDate:) forControlEvents:UIControlEventValueChanged];
        self.inputView = datePicker;
    }
    return self;
}

- (void) setDate : (UIDatePicker*) myDatePicker {

    NSDateFormatter* myDateFormatter = [[NSDateFormatter alloc] init];
    [myDateFormatter setDateFormat:@"MM/dd/yyyy"];

    NSString* dateString = [myDateFormatter stringFromDate:myDatePicker.date];
    self.text = dateString;
}
于 2013-03-29T19:19:48.847 に答える
0

UIDatePicker をトリガーした UITextField は、現在の firstResponder になります。この情報を使用して、現在アクティブな UIDatePicker に関連付けられているテキスト フィールドを識別できます。

于 2013-03-29T19:43:52.243 に答える
-1

タグを UIDatePicker に追加し、そのタグを使用してビューから textField を検索します。

- (void)textFieldDidBeginEditing:(UITextField* )textField {

    if (textField.tag == 603) { 

        datePicker = [[UIDatePicker alloc]init];
        [datePicker setTag:textField.tag];
        [datePicker setDatePickerMode:UIDatePickerModeDate];
        [datePicker setDate:[NSDate date]];
        [datePicker addTarget:self action:@selector(showDate:) forControlEvents:UIControlEventValueChanged];
        textField.inputView = datePicker;

    }

}

- (void) showDate: (UIDatePicker*) myDatePicker {

    NSDate* selected = [myDatePicker date];
    NSString* date = [selected description];

    UITextField *textField = (UITextField *)[self.view viewWithTag:myDatePicker.tag];

}
于 2013-03-29T18:53:35.420 に答える