-1

UITextField特定の形式と特定の形式の通貨フィールドとしてフォーマットする簡単な方法を実装しようとしてUIKeyboardTypeいます。形式については、デリゲートを割り当てて、それを処理させます。

私の .h-file には次が含まれます: @interface UITextField (Currency)... @interface CurrencyTextFieldDelegate <UITextFieldDelegate>、および私の .m-file は以下に出力されます。

できるようになりたいです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
4

1 に答える 1

0

異なる ViewController で、同じ方法で解釈される複数のフィールドを簡単に作成できるようにしたかったのです。私はキーボードをテンキーに設定するメソッドで拡張UITextFieldし、他のいくつかのものを設定し、最も重要なことにデリゲートを設定しました。parseCurrencyField

この質問に対する私の問題は、デリゲートを存続させる方法でした。私の解決策は、単に AppDelegate で定義することでした。

これUITextFieldで、アプリのどこでも、を実行できる[textField parseCurrencyTextField]ようになりました。これは... 通貨フィールドとして解析されます:)

そのような単純な。

于 2013-03-25T14:10:51.880 に答える