iOS的Objective-C的UITextFielddate格式
我正在尝试创build一个信用卡处理视图控制器。 我有一个到期date字段,我想将其格式化为MM / YY。
我试图从这里的UITextField格式在xx-xx-xxx中的片段,但它使用NSNumber时使用的过期date有一个领先的0它不起作用。 我search谷歌,也没有出现。 前导零被删除。 如何在用户input时使用UITextField将其设置为MM / YY格式(例如05/16)?
这是可能的,因为Stripe的到期date的UITextField确实在他们的库中。
我不确定为什么我拒绝投票给一个合法的问题,但我解决了我的问题,以便其他人可以避免问这个问题。
你的类需要符合UITextFieldDelegate才能工作。
我创build了一个基于viewDidLoad函数中的UIControlEventEditingChanged事件的操作。
[dateUIText addTarget:self action:@selector(dateTextFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
这是在月份之后添加“/”时dateTextFieldDidChange函数的样子:
- (void) dateTextFieldDidChange: (UITextField *)theTextField { NSString *string = theTextField.text; if (string.length == 2) { theTextField.text = [string stringByAppendingString:@"/"]; } else if (string.length > 5) { theTextField.text = [string substringToIndex:5]; } }
当用户尝试退格以对月份进行任何调整时,上述function将不允许使用该function,因此需要协助:
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if ([string isEqualToString:@""] && textField.text.length == 3) { NSString *dateString = textField.text; textField.text = [dateString stringByReplacingOccurrencesOfString:@"/" withString:@""]; } return YES; }