2013-03-19 2 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

당신이하려고하는 것이 조금 분명하지 않습니다. 델리게이트는 일반적으로 텍스트 필드가 나타나는 컨트롤러입니다. 범주에 배킹 (binging ivar) 속성을 사용할 수 없으므로이 범주에서 대리자에 대한 강력한 포인터를 가질 수있는 방법이 없다고 생각합니다 . – rdelmar

답변

0

여러 가지 필드를 다른 ViewController에서 같은 방식으로 쉽게 만들 수 있도록 만들고 싶었습니다. UITextFieldparseCurrencyField -method로 확장하여 키보드를 숫자 패드로 설정하고 다른 것들을 설정하는 것이 가장 중요하게 위임자를 설정합니다.

이 질문에 대한 내 문제는 대리인이 살아 남도록 만드는 방법이었고 내 솔루션은 단순히 내 AppDelegate에 정의했습니다.

은 지금은 어떤 UITextField에 내 앱에서하는 [textField parseCurrencyTextField] 할 수있는 곳, 그리고 그것은 ... 통화 필드 :)과

간단한로서 해석 할 수 있습니다.

관련 문제