我无法设置自定义文本字段的文本

时间:2013-03-28 14:10:41

标签: ios objective-c uitextfield

我正在尝试制作自定义TextField(KSTextField)。我从UITextField继承了我的文本字段。正如您可以在下面看到我的KSTextField.h文件。

#import <UIKit/UIKit.h>
#import <UIKit/UITextField.h>

@interface KSTextField : UITextField {}

@end

在我的KSTextField.m中,我试图设置一个虚拟文本属性。但它不起作用。 super.text用法是错误的吗?

我的主要目的是制作一个自定义的UITextField,它只允许我的项目所需的大写字符。

#import "KSTextField.h"

@implementation KSTextField

- (id)init {
    self = [super init];

    super.text = @"help";
    return self;
}

- (void)textFieldDidChangeForKS:(KSTextField *)textField {
    self.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
    NSString *textToUpper = [textField.text uppercaseString];
    [self setText:textToUpper];
}

@end

我的ViewController.h也在

之下
#import <UIKit/UIKit.h>
#import "KSTextField.h"

@interface ViewController : UIViewController 


@property (nonatomic, copy) IBOutlet KSTextField *txtKsName;


@end

这是我的ViewController.m,我想设置我的KSTextField.text

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    self.txtKsName = [[KSTextField alloc] init];

}

委托活动无法解决我的问题。因为我稍后会添加更多功能。这将是我的自定义文本域谢谢!

1 个答案:

答案 0 :(得分:2)

答案是:你做错了!您不必子类只允许使用大写字符。使用UITextFieldDelegate

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

使用textField:shouldChangeCharactersInRange:replacementString:方法,您可以说是否允许将键入的字符添加到框中。

尝试这样的事情:

- (BOOL)textField:(UITextField *)field shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)characters
{
    NSCharacterSet *blockedCharacters = [[[NSCharacterSet uppercaseLetterCharacterSet] invertedSet] retain];
    return ([characters rangeOfCharacterFromSet:blockedCharacters].location == NSNotFound);
}