用TableViewController中的日期选择器替换iOS7键盘

用TableViewController中的日期选择器替换iOS7键盘,第1张

概述我希望我的textfield“DateText”能够使用这种类型的值打开DatePicker(年 – 月 – 日): YYYY-MM-DD 有没有简单的方法来更改键盘? 您可以使用UITextField的inputView属性“替换”键盘: - (void) initializeTextFieldInputView { UIDatePicker *datePicker = [[UIDate 我希望我的textfIEld“DateText”能够使用这种类型的值打开DatePicker(年 – 月 – 日):
YYYY-MM-DD

有没有简单的方法来更改键盘?

解决方法 您可以使用UITextFIEld的inputVIEw属性“替换”键盘:
- (voID) initializeTextFIEldinputVIEw {    UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectZero];    datePicker.datePickerMode = UIDatePickerModeDate;    [datePicker addTarget:self                   action:@selector(dateUpdated:)         forControlEvents:UIControlEventValueChanged];    self.textFIEld.inputVIEw = datePicker;}- (voID) dateUpdated:(UIDatePicker *)datePicker {    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];    [formatter setDateFormat:@"yyyy-MM-dd"];    self.textFIEld.text = [formatter stringFromDate:datePicker.date];}

UIDatePickers没有像UIPickerVIEws这样的委托,所以这就是必须添加一个动作就好像它是一个UIbutton的原因. :在选择器声明的末尾提供UIDatePicker,以方便获取更改日期.如果您不想在方法中发送对象,可以通过引用UITextFIEld的inputVIEw来获取UIDatePicker:

UIDatePicker *datePicker = (UIDatePicker *)self.textFIEld.inputVIEw;

最后,在使用NSDateFormatter设置格式时,最好创建一个方法来返回NSDateFormatter对象,以确保格式一致.至少,在项目中创建一个常量/宏,声明格式字符串.

编辑

正如Pavan在评论主题中所说,如果你想在键盘上方添加一个完成按钮,请使用inputAccessoryVIEw:

UIToolbar *toolbar = [[UIToolbar alloc] init];UIbarbuttonItem *donebutton = [[UIbarbuttonItem alloc] initWithTitle:@"Done" style:UIbarbuttonItemStyleDone target:self action:@selector(donebuttonWaspressed:)];UIbarbuttonItem *flexibleSeparator = [[UIbarbuttonItem alloc] initWithbarbuttonSystemItem:UIbarbuttonSystemItemFlexibleSpace target:nil action:nil];toolbar.items = @[flexibleSeparator,donebutton];self.textFIEld.inputAccessoryVIEw = toolbar;

编辑2,SWIFT

看起来像这样答案已经过时了.使用Swift 3添加实现:

@IBOutlet weak var textFIEld: UITextFIEld!overrIDe func vIEwDIDLoad() {    super.vIEwDIDLoad()    self.initializeTextFIEldinputVIEw()}func initializeTextFIEldinputVIEw() {    // Add date picker    let datePicker = UIDatePicker()    datePicker.datePickerMode = .date    datePicker.addTarget(self,action: #selector(dateChanged(_:)),for: .valueChanged)    self.textFIEld.inputVIEw = datePicker    // Add toolbar with done button on the right    let toolbar = UIToolbar(frame: CGRect(x: 0,y: 0,wIDth: self.vIEw.bounds.wIDth,height: 1))    let flexibleSeparator = UIbarbuttonItem(barbuttonSystemItem: .flexibleSpace,target: nil,action: nil)    let donebutton = UIbarbuttonItem(barbuttonSystemItem: .done,target: self,action: #selector(donebuttonpressed(_:)))    toolbar.items = [flexibleSeparator,donebutton]    self.textFIEld.inputAccessoryVIEw = toolbar}func dateChanged(_ datePicker: UIDatePicker) {    let formatter = DateFormatter()    formatter.dateFormat = "yyyy-MM-dd"    self.textFIEld.text = formatter.string(from: datePicker.date)}

您还可以通过在UITextFIEld中转换inputVIEw来获取UIDatePicker:

let datePicker = self.textFIEld.inputVIEw as? UIDatePicker
总结

以上是内存溢出为你收集整理的用TableViewController中的日期选择器替换iOS7键盘全部内容,希望文章能够帮你解决用TableViewController中的日期选择器替换iOS7键盘所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1102613.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存