显示在轻拍在textfield的datepicker

app*_*ser 24 uidatepicker uitextfield ios4 xcode4

如何在文本框上点击显示datetimepicker控件?

我有一个具有到达和离开文本字段的用户界面,当用户点击到达文本框时,它应该调出datetimepicker控件而不是键盘,并且与出发文本框相同.

Dee*_*olu 42

您可以使用文本字段的属性inputViewinputAccessoryView属性.创建日期选择器并将其设置为两个文本字段的输入视图.还为Done按钮创建另一个视图,并将其作为附件视图.您将需要该按钮来关闭输入视图.

Done按钮必须连接多达功能基本上做到这一点-

if ( [textField1 isFirstResponder] ) {
    [textField1 resignFirstResponder];
} else if ( [textField2 isFirstResponder] ) {
    [textField2 resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)

另一种选择是子类化UITextField和覆盖inputViewinputAccessoryView.这是有足够数量时的方法.

@interface CustomKeyboardAppDelegate : NSObject <UIApplicationDelegate> {
...

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITextField *textField;
@property (nonatomic, retain) IBOutlet UIToolbar *accessoryView;
@property (nonatomic, retain) IBOutlet UIDatePicker *customInput;

- (IBAction)dateChanged:(id)sender;
- (IBAction)doneEditing:(id)sender;
@end
Run Code Online (Sandbox Code Playgroud)

在XIB中,拉出a UIToolbar和a UIDatePicker但不要将其附加到视图中.适当连接插座.dateChanged:响应日期选择器中的更改,并在单击工具栏中doneEditing:Done按钮时调用.也可以连接它们.这些方法如下所示实施.

@implementation CustomKeyboardAppDelegate

@synthesize window=_window;
@synthesize textField = _textField;
@synthesize accessoryView = _accessoryView;
@synthesize customInput = _customInput;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.textField.inputView = self.customInput;
    self.textField.inputAccessoryView = self.accessoryView;
    ...    
}

...

- (IBAction)dateChanged:(id)sender {
    UIDatePicker *picker = (UIDatePicker *)sender;

    self.textField.text = [NSString stringWithFormat:@"%@", picker.date];
}

- (IBAction)doneEditing:(id)sender {
    [self.textField resignFirstResponder];
}
@end
Run Code Online (Sandbox Code Playgroud)

随着更多文本字段依赖于此选择器,最后两种方法将膨胀.

  • @Deepak你的意思是"不要把它附在视图上"?我按照你的代码,这是正常工作,除了视图出现时我的视图上出现的DatePicker.如何在启动时隐藏它?非常感谢. (2认同)

osc*_*lon 11

非常简单,在ViewController.h放入UITextFieldDelegateviewDidLoad.

txtFecha.delegate = self;

datePicker = [[UIDatePicker alloc]init];
[datePicker setDatePickerMode:UIDatePickerModeDate];

self.txtFecha.inputView = datePicker;
Run Code Online (Sandbox Code Playgroud)