2013-03-19 76 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],它會......被解析爲一個貨幣字段:)

這麼簡單。