2011-06-21 25 views
2

Iam對UIDatePicker使用以下代碼,無論選擇它的日期是在標籤中顯示的。但是我需要在選擇日期後關閉Picker。這是可能的,請建議我。如何在選擇日期後禁用UIDatePicker?

我使用下面的代碼:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    //Create label 
    label = [[UILabel alloc] init]; 
    label.frame = CGRectMake(10, 10, 300, 40); 
    label.textAlignment = UITextAlignmentCenter; 

    //Use NSDateFormatter to write out the date in a friendly format 
    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    df.dateStyle = NSDateFormatterMediumStyle; 
    label.text = [NSString stringWithFormat:@"%@", 
        [df stringFromDate:[NSDate date]]]; 
    [df release]; 
    [self.view addSubview:label]; 
    [label release]; 

    // Initialization code 
    datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 250, 325, 250)]; 
    datePicker.datePickerMode = UIDatePickerModeDate; 
    datePicker.hidden = NO; 
    datePicker.date = [NSDate date]; 
    [datePicker addTarget:self 
        action:@selector(changeDateInLabel:) 
     forControlEvents:UIControlEventValueChanged]; 
    [self.view addSubview:datePicker]; 
    [datePicker release]; 
} 

- (void)changeDateInLabel:(id)sender{ 
    //Use NSDateFormatter to write out the date in a friendly format 
    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    df.dateStyle = NSDateFormatterMediumStyle; 
    label.text = [NSString stringWithFormat:@"%@", 
        [df stringFromDate:datePicker.date]]; 
    [df release]; 
} 
+0

你見過這個嗎?.. http://stackoverflow.com/a/4824319/1865424 – Shivaay

回答

3

你必須使用按鈕點擊背景隱藏您的視圖中的日期選擇器。

-(IBAction)backGroundClick:(id)sender 
{ 
    [datePicker removeFromSuperview]; 
} 
2

也許更好,然後從上海華盈刪除將設置用戶交互爲NO
,你需要按鈕「完成」,如在用戶準備完成艇員選拔日期

-(IBAction)buttonDoneClick:(id)sender 
{ 
    [datePicker setUserInteractionEnabled:NO]; 
} 
0

下面的代碼將工作。 攻絲日期標籤上將使的DatePicker如下:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]init]; 
    tap.numberOfTapsRequired = 1; 

    label = [[UILabel alloc] init]; 
    label.frame = CGRectMake(10, 20, 300, 40); 
    label.userInteractionEnabled = YES; 
    label.textAlignment = NSTextAlignmentCenter; 
    label.backgroundColor = [UIColor redColor]; 
    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    df.dateStyle = NSDateFormatterMediumStyle; 
    label.text = [NSString stringWithFormat:@"%@", 
        [df stringFromDate:[NSDate date]]]; 
    [label addGestureRecognizer:tap]; 
    [tap addTarget:self action:@selector(datePickerView)]; 

    [self.view addSubview:label]; 


} 

- (void)datePickerView 
{ 
    // Initialization code 
    datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 250, 325, 250)]; 
    datePicker.datePickerMode = UIDatePickerModeDate; 
    datePicker.hidden = NO; 
    datePicker.date = [NSDate date]; 
    [self.view addSubview:datePicker]; 
    [datePicker addTarget:self 
        action:@selector(changeDateInLabel:) 
     forControlEvents:UIControlEventValueChanged]; 
} 


- (void)changeDateInLabel:(id)sender{ 
    //Use NSDateFormatter to write out the date in a friendly format 
    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    df.dateStyle = NSDateFormatterMediumStyle; 
    label.text = [NSString stringWithFormat:@"%@", 
        [df stringFromDate:datePicker.date]]; 

} 

,並使用以下方法選擇器將從視圖辭職上選取器外面敲擊。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [datePicker removeFromSuperview]; 
} 
9

我建議你做這樣的事情:

enter image description here

使用工具欄與完成按鈕,也許一個取消按鈕 ...

這僅僅是一個快速實施,可能有幫助

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 100, 320, 44)]; 
textField.text   = @"Date"; 
[self.view addSubview:textField]; 

UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
toolbar.barStyle = UIBarStyleBlackTranslucent; 

UIBarButtonItem *itemDone = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:textField action:@selector(resignFirstResponder)]; 
UIBarButtonItem *itemSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 

toolbar.items = @[itemSpace,itemDone]; 

UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 216)]; 
datePicker.minimumDate = [NSDate date]; 
datePicker.date   = [NSDate date]; 
[datePicker addTarget:self action:@selector(didChangePickerDate:) forControlEvents:UIControlEventValueChanged]; 

textField.inputAccessoryView = toolbar; 
textField.inputView   = datePicker; 

[textField becomeFirstResponder]; 
+0

感謝您的提示! –

相關問題