我正在尝试实施一种简单的方法,将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 :(得分:0)
我想在不同的ViewControllers上轻松创建几个要以相同方式解释的字段。我使用UITextField
- 方法扩展parseCurrencyField
,将键盘设置为numpad,其他一些东西,最重要的是设置代理。
我对这个问题的问题是如何使代表保持活力,而我的解决方案只是在我的AppDelegate中定义它。
现在,我可以在我的应用中的任何UITextField
上执行[textField parseCurrencyTextField]
,并且...将被解析为货币字段:)
这很简单。