IQKeyboardManager 与 UIDatePicker
IQKeyboardManager with UIDatePicker
我已经实现了 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;
select 您在 Interface Builder 或您的 .xib 中的字段,并显示身份检查器:将您的字段的 class 更改为 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
}
您现在可以为 previous/next/done
添加自定义选择器(请参考 'IQUIView+IQKeyboardToolbar.h'
)以获取通知。请注意,自定义选择器不会影响 previous/next/done
的本机功能,它仅用于回调目的。详细文档请参考'IQUIView+IQKeyboardToolbar.h'
,'how to use?'请参考'TextFieldViewController.m
'。
我已经实现了 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;
select 您在 Interface Builder 或您的 .xib 中的字段,并显示身份检查器:将您的字段的 class 更改为
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 }
您现在可以为 previous/next/done
添加自定义选择器(请参考 'IQUIView+IQKeyboardToolbar.h'
)以获取通知。请注意,自定义选择器不会影响 previous/next/done
的本机功能,它仅用于回调目的。详细文档请参考'IQUIView+IQKeyboardToolbar.h'
,'how to use?'请参考'TextFieldViewController.m
'。