10

我已经实现了IQKeyboardManager 框架以使键盘处理更容易。它工作得很好,除了一件事:

我的应用程序中有一些UItextField控件可以打开一个UIDatePicker代替默认键盘(例如数字键盘、小数键盘、支持 ASCII 等)。

这是带有图形结果的代码示例:

// Create the datePicker
UIDatePicker *birthdayDatePicker = [UIDatePicker new];
[birthdayDatePicker setDatePickerMode:UIDatePickerModeDate];

// Assign the datePicker to the textField
[myTextField setInputView:birthdayDatePicker];

我的问题是: 是否可以处理“确定”按钮上的操作以填写“出生日期”字段?

在此处输入图像描述

编辑 :

对于那些想知道我如何解决我的问题的人:

  • 在我的.h中,我导入了IQDropDownTextField.h

    #import "IQDropDownTextField.h"
    
  • .h中,我将 my 的类型更改UITextFieldIQDropDownTextField

    @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
    }
    
4

1 回答 1

3

您现在可以添加自定义选择器(请参阅'IQUIView+IQKeyboardToolbar.h'previous/next/done以获得通知。请注意,自定义选择器不会影响 的本机功能previous/next/done,它仅用于回调目的。有关详细文档,请参阅'IQUIView+IQKeyboardToolbar.h'“如何使用?” 请参考' TextFieldViewController.m'。

于 2015-01-13T19:13:41.213 回答