界面构建器具有此“自定义格式化程序”,可以将其拖动到文本字段。

但是,这东西根本没有任何属性,而且不存在苹果公司典型的文档。

我需要创建一个格式化程序,使其可以接受数字,字母数字集中的文本并加下划线并拒绝其他所有内容。

我怀疑此自定义格式化程序是我所需要的,但是我该如何使用呢?还是可以使用接口构建器上存在的常规格式化程序来完成我需要的工作?

您可以使用界面生成器来举例吗?

谢谢。

最佳答案

NSFormatter类是一个抽象类,因此您需要对其进行子类化。对此,您需要实现以下方法。

- (BOOL)isPartialStringValid:(NSString *)partialString newEditingString:(NSString **)newString errorDescription:(NSString **)error;
- (NSString *)stringForObjectValue:(id)obj;
- (BOOL)getObjectValue:(out id *)obj forString:(NSString *)string errorDescription:(out NSString **)error;

创建一个子类,如:

.h
@interface MyFormatter : NSFormatter

@end

.m
@implementation MyFormatter

- (BOOL)isPartialStringValid:(NSString *)partialString newEditingString:(NSString **)newString errorDescription:(NSString **)error
{
    // In this method you need to write the validation
    // Here I'm checking whether the first character entered in the textfield is 'a' if yes, It's invalid in my case.
    if ([partialString isEqualToString:@"a"])
    {
        NSLog(@"not valid");
        return false;
    }
    return YES;
}

- (NSString *)stringForObjectValue:(id)obj
{
    // Here you return the initial value for the object
    return @"Midhun";
}

- (BOOL)getObjectValue:(out id *)obj forString:(NSString *)string errorDescription:(out NSString **)error
{
    // In this method we can parse the string and pass it's value (Currently all built in formatters won't support so they just return NO, so we are doing the same here. If you are interested to do any parsing on the string you can do that here and pass YES after a successful parsing
    // You can read More on that here: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSFormatter_Class/index.html#//apple_ref/occ/instm/NSFormatter/getObjectValue:forString:errorDescription:
    return NO;
}
@end

关于ios - “界面上的自定义格式化程序”构建器的目的是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29059270/

10-09 16:30