2013-12-19 53 views
0

正如你可以從我瞭解的問題,我不能得到的UITextField(其中2有inputView作爲的UIDatePicker,1是正常的)改變挑文本到在UIDatePicker(XIB文件)中選取的日期。 到目前爲止,我設法在點擊textfield時顯示datePicker(並在點擊視圖時將其刪除,但我無法獲取textField將其文本更改爲選擇的日期UIDatePicker。 這裏是我的.m文件:
改變文本框輸入的日期在的UIDatePicker(當值改變了)

#import "ViewController.h" 
#define kNIBname @"MyDatePickerView" 


@interface ViewController()<UITextFieldDelegate> 
@property (weak, nonatomic) IBOutlet UITextField *myTF; 
@property (weak, nonatomic) IBOutlet UITextField *myOtherTF; 
@property (nonatomic, strong) UIView *myDatePickerView; 
@property (nonatomic,strong) UIDatePicker *MyDatePicker; 
@end 

@implementation ViewController 
@synthesize myTF,myOtherTF,MyDatePicker,myDatePickerView; 
- (void)viewDidLoad{ 
[super viewDidLoad]; 
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self          action:@selector(dropPicker:)]; 
[self.view addGestureRecognizer:tap]; 
[self datePickerValueChanged:MyDatePicker]; 
MyDatePicker = [[myDatePickerView subviews] lastObject]; 
[MyDatePicker setDatePickerMode: UIDatePickerModeDate]; 
[MyDatePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged]; 
[myTF setInputView:myDatePickerView]; 
[myOtherTF setInputView:myDatePickerView]; 
// Do any additional setup after loading the view, typically from a nib. 
} 
-(IBAction)dropPicker:(id)sender{ 
[myDatePickerView removeFromSuperview]; 
[self.view endEditing:YES]; 
} 
- (void) loadDatePickerView{ 
UINib *nib = [UINib nibWithNibName:kNIBname bundle:[NSBundle mainBundle]]; 
NSArray *views = [nib instantiateWithOwner:self options:nil]; 
self.myDatePickerView = [views firstObject]; 
[myDatePickerView setFrame:CGRectMake(0, 318, 320, 162)]; 
[self.view addSubview:myDatePickerView]; 
} 


-(IBAction)datePickerValueChanged:(UIDatePicker *)sender{ 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setLocale:sender.locale]; 
[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 
} 
-(BOOL) textFieldShouldBeginEditing:(UITextField *)textField{ 
if(textField == myTF || textField == myOtherTF){ 
    [self loadDatePickerView]; 
    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    [df setLocale:[MyDatePicker locale]]; 
    [df setDateStyle:NSDateFormatterMediumStyle]; 
    [self datePickerValueChanged:MyDatePicker]; 
    [textField setText:[df stringFromDate:[MyDatePicker date]]]; 
    return NO; 
} else { 
    return YES; 
} 
} 

@end 

回答

1

如果我正確地讀這篇文章,你設置錯了方法的日期。textFieldShouldBeginEditing只調用一次,文本字段的編輯開始之前,你需要的是設置文本框文本您datePickerValueChanged方法,因爲這是被炒魷魚每次你選擇一個日期時間的人。

+0

但是我怎麼知道哪些文本框是活動的,我還有其他TEX顯示常規鍵盤的tfields。 – iOSMaster