【问题标题】:changing textfield input to the date picked in a UIDatePicker (when value is changed)将文本字段输入更改为 UIDatePicker 中选择的日期(更改值时)
【发布时间】: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


    【解决方案1】:

    如果我没看错,那么您设置日期的方法有误。 textFieldShouldBeginEditing 仅在开始编辑文本字段之前调用一次。您想要的是在您的 datePickerValueChanged 方法中设置 textField 文本,因为这是每次您选择日期时都会触发的文本。

    【讨论】:

    • 但是我如何知道哪个文本字段处于活动状态,我还有其他显示常规键盘的文本字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2021-05-11
    • 1970-01-01
    • 2017-12-05
    • 2011-04-16
    • 2015-01-27
    • 2014-12-22
    相关资源
    最近更新 更多