【发布时间】:2013-12-19 18:21:20
【问题描述】:
正如您从我的问题中可以理解的那样,我无法获取 UITextField(其中 2 个有一个 inputView 作为 UIDatePicker,1 个是正常的)将文本更改为在 UIDatePicker(一个 XIB 文件)中选择的日期。
到目前为止,我设法在点击文本字段时显示 datePicker(并在点击视图时将其删除,但我无法让 textField 将其文本更改为选择的 UIDatePicker 日期。
这是我的 .m 文件:
#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
【问题讨论】:
标签: ios iphone objective-c uitextfield uidatepicker