2013-03-19 68 views
-1

我试图实现一种简单的方法来将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 
+0

这是有点不清楚你想要做什么。委托通常是控制器的视图中的文本字段出现英寸你不能有一个类别的属性(与伊娃支持),所以我不认为有一种方法来强有力的指针,该类别中的委托。 – rdelmar 2013-03-19 15:50:49

回答

0

我想让在不同的ViewControllers上以相同的方式创建几个字段来解释。我扩展UITextFieldparseCurrencyField - 方法,即将键盘设置为数字键盘,其他一些东西,最重要的是设置代表。

我对这个问题的问题是如何使委托保持活着,我的解决方案只是在我的AppDelegate中定义它。

现在我可以在任何地方UITextField在我的应用程序,做了[textField parseCurrencyTextField],它会......被解析为一个货币字段:)

这么简单。