次のコードは、iOS 4.3(おそらく他のバージョンの場合もあります)では奇妙な動作を示しています。この例では、日付が4 Aug 2011 2:31 PM
に設定されたUIDatePicker
が表示されます。 UIDatePicker
以下のUILabel
は、参照の日付を表示します。下の3つのUIButtons
は1,5,8と表示され、minuteInterval
はUIDatePicker
に設定されています。UIDatePicker minuteIntervalを設定したときの奇妙な動作
タップ1 - UIDatePicker
の選択された日付が4 Aug 2011 2:31 PM
であり、分間隔が1であることが予期されることを示します。 5をタップ
は - UIDatePicker
で選択した日付が4 Aug 2011 2:35 PM
であることを示しており、分間隔が予想されている、5である(1時間を主張することができ切り捨てなければならないが、それは大きな問題ではありません)。
タップ10 - UIDatePicker
の選択された日付が4 Aug 2011 2:10 PM
であり、分間隔が10であることを示します。分間隔は正しいですが、選択した時間は2:10ですか? 1人は2:40(切り上げた場合)または2:30(切り下げた場合)を予定しています。
BugDatePickerVC.h
#import <UIKit/UIKit.h>
@interface BugDatePickerVC : UIViewController {
NSDateFormatter *dateFormatter;
NSDate *date;
UIDatePicker *datePicker;
UILabel *dateL;
UIButton *oneB;
UIButton *fiveB;
UIButton *tenB;
}
- (void) buttonEventTouchDown:(id)sender;
@end
BugDatePickerVC.m
輸入 "BugDatePickerVC.h"
@implementation BugDatePickerVC
- (id) init
{
if (!(self = [super init]))
{
return self;
}
dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"d MMM yyyy h:mm a";
date = [[dateFormatter dateFromString:@"4 Aug 2011 2:31 PM"] retain];
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// Date picker
datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 216.0f)];
datePicker.date = date;
datePicker.minuteInterval = 1;
[self.view addSubview:datePicker];
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// Label with the date.
dateL = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, 230.0f, 300.0f, 32.0f)];
dateL.text = [dateFormatter stringFromDate:date];
[self.view addSubview:dateL];
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// Button that set the date picker's minute interval to 1.
oneB = [UIButton buttonWithType:UIButtonTypeRoundedRect];
oneB.frame = CGRectMake(10.0f, 270.0f, 100.0f, 32.0f);
oneB.tag = 1;
[oneB setTitle:@"1" forState:UIControlStateNormal];
[oneB addTarget:self
action:@selector(buttonEventTouchDown:)
forControlEvents:UIControlEventTouchDown];
[self.view addSubview:oneB];
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// Button that set the date picker's minute interval to 5.
fiveB = [UIButton buttonWithType:UIButtonTypeRoundedRect];
fiveB.frame = CGRectMake(10.0f, 310.0f, 100.0f, 32.0f);
fiveB.tag = 5;
[fiveB setTitle:@"5" forState:UIControlStateNormal];
[fiveB addTarget:self
action:@selector(buttonEventTouchDown:)
forControlEvents:UIControlEventTouchDown];
[self.view addSubview:fiveB];
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// Button that set the date picker's minute interval to 10.
tenB = [UIButton buttonWithType:UIButtonTypeRoundedRect];
tenB.frame = CGRectMake(10.0f, 350.0f, 100.0f, 32.0f);
tenB.tag = 10;
[tenB setTitle:@"10" forState:UIControlStateNormal];
[tenB addTarget:self
action:@selector(buttonEventTouchDown:)
forControlEvents:UIControlEventTouchDown];
[self.view addSubview:tenB];
return self;
}
- (void) dealloc
{
[dateFormatter release];
[date release];
[datePicker release];
[dateL release];
[oneB release];
[fiveB release];
[tenB release];
[super dealloc];
}
- (void) buttonEventTouchDown:(id)sender
{
datePicker.minuteInterval = [sender tag];
}
はありがとう...魔法のように働いた:) –