委托的分配将针对遗嘱发布

时间:2013-03-19 09:58:44

标签: ios objective-c cocoa-touch delegates uitextfield

我正在尝试实施一种简单的方法,将UITextField格式化为具有特定UIKeyboardType和特定格式的货币字段。对于格式,我正在分配一个委托并让它处理它。

我的.h文件包含:@interface UITextField (Currency) ... @interface CurrencyTextFieldDelegate <UITextFieldDelegate>,我的.m文件打印在下方。

我希望能够UITextField *textField = [...]; [textField formatAsCurrency];。数字键盘显示正确,但永远不会调用shouldChangeCharactersInRange。

我的猜测是,一旦执行formatAsCurrency,代理就会被释放?我不知道。有什么想法吗?

#import "CurrencyTextFieldDelegate.h"

@implementation UITextField (Currency)

- (void)formatAsCurrency {
    CurrencyTextFieldDelegate *delegateViewController = [[CurrencyTextFieldDelegate alloc] init];
    self.delegate = delegateViewController;
    self.keyboardType = UIKeyboardTypeNumberPad;
}

@end

@implementation CurrencyTextFieldDelegate

@synthesize storedAmount = _storedAmount;

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSLog(@"shouldChangeCharactersInRange");
    // magic happens
    return NO;
}

@end

1 个答案:

答案 0 :(得分:0)

我想在不同的ViewControllers上轻松创建几个要以相同方式解释的字段。我使用UITextField - 方法扩展parseCurrencyField,将键盘设置为numpad,其他一些东西,最重要的是设置代理。

我对这个问题的问题是如何使代表保持活力,而我的解决方案只是在我的AppDelegate中定义它。

现在,我可以在我的应用中的任何UITextField上执行[textField parseCurrencyTextField],并且...将被解析为货币字段:)

这很简单。