0

有没有办法确保用户只能在文本字段中输入日期?例如,字符 0-9 和 /(或更好的解决方案)?如果是这样,最好的方法是什么?

我没有成功

NSString *LEGAL = @"0123456789/";

NSCharacterSet *characterSet = [[NSCharacterSet characterSetWithCharactersInString:LEGAL] reverseSet];

NSString *filteredOne = [[firstString componentsSeparatedByCharactersInSet:characterSet]

componentsJoinedByString:@""];

NSString *filteredTwo = [[secondString componentsSeparatedByCharactersInSet:characterSet]

componentsJoinedByString:@""];

firstString = 过滤的一个;

secondString = 过滤的二;

4

1 回答 1

1

如果我正确理解您的问题,我可能会提供帮助。这是我以前用来格式化文本字段以选择日期的一些旧代码。希望您能够理解它并使其适应您的需求:

笔记:UITextField *endDate;

 //Get date and format it for the textfields
-(void)updateTextField:(id)sender
{
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyy-MM-dd"];

    UIDatePicker *picker = (UIDatePicker*)self.endDate.inputView;
    NSString *theDate = [dateFormat stringFromDate:picker.date];

    self.endDate.text = [NSString stringWithFormat:@"%@",theDate];

    [dateFormat release];
}

要使用日期选择器而不是键盘,请在 viewDidLoad() 方法中尝试这样的操作*

//Make date pickers instead of keyboards for time text boxes
UIDatePicker *datePicker = [[[UIDatePicker alloc]initWithFrame:CGRectMake(0.0, 0.0, 320.0, 162.0)] autorelease];
datePicker.datePickerMode = UIDatePickerModeDate;
datePicker.maximumDate = [NSDate date];
NSDate *setDate = [NSDate dateWithYear: 2012 month: 02 day: 03];
[datePicker setDate:setDate];
[datePicker addTarget:self action:@selector(updateTextField:) forControlEvents:UIControlEventValueChanged];       
[self.startDate setInputView:datePicker];

datePicker = [[[UIDatePicker alloc]initWithFrame:CGRectMake(0.0, 0.0, 320.0, 162.0)] autorelease];
datePicker.datePickerMode = UIDatePickerModeDate;
datePicker.maximumDate = [NSDate date];
setDate = [NSDate dateWithYear: 2012 month: 02 day: 10];
[datePicker setDate:setDate];
[datePicker addTarget:self action:@selector(updateTextField2:) forControlEvents:UIControlEventValueChanged];       
[self.endDate setInputView:datePicker];

*注意,您可能需要自己的 NSDate 接口/实现,如果需要,代码如下。不要忘记在文件顶部导入它!

NSDate.h

#import <Foundation/Foundation.h>

@interface NSDate (missingFunctions) 
+ (NSDate *)dateWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day;
@end

NSDate.m

#import "NSDate.h"

@implementation NSDate (missingFunctions)

+ (NSDate *)dateWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day {
    NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
    NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease];
    [components setYear:year];
    [components setMonth:month];
    [components setDay:day];
    return [calendar dateFromComponents:components];
}   
@end
于 2013-02-11T08:31:19.353 回答