我正在尝试实现一种简单的方法来格式化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