【发布时间】:2015-01-13 15:50:35
【问题描述】:
我已经实现了IQKeyboardManager framework 以使键盘处理更容易。它工作得很好,除了一件事:
我的应用中有一些 UItextField 控件打开 UIDatePicker 代替默认键盘(例如数字键盘、小数键盘、支持 ASCII 等)。
这是一个带有图形结果的代码示例:
// Create the datePicker
UIDatePicker *birthdayDatePicker = [UIDatePicker new];
[birthdayDatePicker setDatePickerMode:UIDatePickerModeDate];
// Assign the datePicker to the textField
[myTextField setInputView:birthdayDatePicker];
我的问题是: 是否可以处理“OK”按钮上的操作以填充字段“Date de naissance”?
编辑:
对于那些想知道我如何解决我的问题的人:
-
在我的 .h 中,我导入了
IQDropDownTextField.h:#import "IQDropDownTextField.h" -
在.h中,我将
UITextField的类型改为IQDropDownTextField:@property (weak, nonatomic) IBOutlet IQDropDownTextField *myTextField; 在 Interface Builder 或 .xib 中选择您的字段,并显示 Identity Inspector:将您的字段的类更改为
IQDropDownTextField。
注意根据 Mohd Iftekhar Qurashi 评论:以下两点可以通过以下代码避免:
// Set myTextField's dropDownMode to IQDropDownModeDatePicker
myTextField.dropDownMode = IQDropDownModeDatePicker;
// Create a dateFormatter
NSDateFormatter *df = [NSDateFormatter new];
[df setDateFormat:@"dd/MM/yyyy"];
// Assign the previously created dateFormatter to myTextField
myTextField.dateFormatter = df;
// Assign a minimum date and/or maximum date if you want
myTextField.minimumDate = [NSDate date];
myTextField.maximumDate = [NSDate date];
// That's all !
-
在.m中,我添加了
setCustomDoneTarget:action:方法:// Create the datePicker UIDatePicker *birthdayDatePicker = [UIDatePicker new]; [birthdayDatePicker setDatePickerMode:UIDatePickerModeDate]; // Assign the datePicker to the textField [myTextField setInputView:birthdayDatePicker]; // Just added this line [myTextField setCustomDoneTarget:self action:@selector(doneAction:)]; -
在.m中,我添加了
doneAction:方法:- (void)doneAction:(UITextField *)textField { [myTextField setText:[DateHelper getStringFromDate:birthdayDatePicker.date format:@"dd/MM/yyyy" useGmt:NO]]; // getStringFromDate:format:useGmt: is a method to convert a NSDate to a NSString according to the date format I want }
【问题讨论】:
-
仅供参考,IQDropDownTextField 有属性可以设置它的 'IQDropDownMode',你可以直接将它的模式设置为 'IQDropDownModeDatePicker' 以将 datePicker 显示为 inputView。无需手动维护 datePicker,从 'date' 属性中获取选定的日期。
-
@MohdIftekharQurashi 感谢您提供的信息,我错过了。它为我节省了几行代码。
标签: ios objective-c iphone xcode6 iqkeyboardmanager