私はDatePickerを持っています。私はユーザーに "from"テキストフィールド(明日午前9時に開始)と "until"(1.5時間後に始まる)のテキストフィールドで日付と時刻を選択させたいと思っています。例については2つのテキストフィールドを持つUIDatePicker(日付から/まで)?
。 「From」TextField:25.04.2012 09:00、「Until」TextField:25.04.2012 10:30
アップロードした写真を見てください。
これまでのところすべてうまくいきましたが、「until」テキストフィールドをクリックすると、Datepickerは正しい日付と時刻を設定しませんでした。彼は2012年4月25日9時の代わりに、2012年4月25日、これまで午前10時30
マイコード設定します。
ViewDidLoad:
//Create DatePicker
self.thePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 152, 325, 300)];
self.thePicker.datePickerMode = UIDatePickerModeDateAndTime;
[thePicker addTarget:self action:@selector(dateChanged) forControlEvents:UIControlEventValueChanged];
//Set DatePicker to Tomorrow 9:00 o'clock
NSDate *today = [NSDate date];
NSCalendar *german = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[german setLocale:[NSLocale currentLocale]];
NSDateComponents *nowComponents = [german components:NSYearCalendarUnit | NSWeekCalendarUnit | NSHourCalendarUnit | NSDayCalendarUnit| NSMonthCalendarUnit| NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:today];
[nowComponents setDay:[nowComponents day] +1];
[nowComponents setWeek: [nowComponents week]];
[nowComponents setHour:9];
[nowComponents setMinute:0];
[nowComponents setSecond:0];
NSDate *beginningOfWeek = [german dateFromComponents:nowComponents];
NSDate *pickereinstelldate= beginningOfWeek;
[self.thePicker setDate:pickereinstelldate];
//Set DatePicker to correct Format
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd.MM.yyyy HH:mm"];
NSString *datum =[dateFormatter stringFromDate:self.thePicker.date];
//set the date at textfield "bis" to 1.5 hours later
NSDate *morgenDate = [beginningOfWeek dateByAddingTimeInterval:3600*1.5];
NSString *newdate = [dateFormatter stringFromDate:morgenDate];
//Set the until TextField with the newdate
tfVon.text=datum;
tfBis.text=newdate;
[self.view addSubview:thePicker];
self.thePicker.hidden=YES;
tfVon.inputView=thePicker;
tfBis.inputView=thePicker;
}
アクション機能:
ここ-(IBAction)dateChanged
{
self.date = [thePicker date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd.MM.yyyy HH:mm"];
NSString *datum =[dateFormatter stringFromDate:self.date];
NSDate *neuesdatum = [date dateByAddingTimeInterval:3600*1.5];
NSString *neuesd = [dateFormatter stringFromDate:neuesdatum];
//when i click on "From" textfield
if (dateBOOL==YES)
{
tfVon.text=datum;
tfBis.text=neuesd;
}
//when i click on "Until" textfield
if (dateBOOL==NO) {
tfBis.text=neuesd;
}
}
がある私は私のdateboolを設定ありません:
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if (textField==tfVon)
{
dateBOOL=YES;
self.thePicker.hidden=NO;
return YES;
}
if (textField==tfBis)
{
dateBOOL=NO;
self.thePicker.hidden=NO;
return YES;
}
}
return YES;
}
私は正しい時刻にTextFieldの「まで」に日付ピッカーを設定することができます方法はありますか?
ご協力いただきありがとうございます。それは完全に動作します。うーん、私はtextFieldShouldBeginnEditingで試してみました。このメソッドのtypは無効なので、どのようにtextfieldDidBeginnEditingを使用できますか? – Bashud
textFieldDidBeginEditingは、ユーザーが編集を開始したときに呼び出されるため、無効です。これは、テキストフィールドに許可されていることを通知することを意味します。これは、あなたが行ったようにtextFieldShouldBeginEditingの実装か、デフォルトで(もしメソッドが実装されていなければ)行うことができます。ウルインプ。 textfieldDidBeginnEditingの内容は、ur implのようになります。 textFieldShouldBeginnEditingの何も返さないことを除いて。 textFieldShouldBeginnEditingは、ユーザーが編集を許可されているかどうか、つまり、時々YESを返したり、時にはNOを返すような場合に実行時に(何らかの依存関係で)決定するプログラムのためのものです。 –
ああ、説明をありがとう。今私はまた、textFieldDidBeginnEditingが良い選択だと思う!再び、あなたの助けのためにthx – Bashud