金額入力フィールドを作成について。
フォーマットは日本円(例: ¥100,000)
桁数は10桁まで制限しています。
VuewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITextFieldDelegate>{
}
@property (nonatomic, weak) IBOutlet UITextField* priceField;
@end
VuewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_priceField.delegate = self;
[_priceField addTarget:self action:@selector(priceEditingStart:) forControlEvents:UIControlEventEditingDidBegin];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
// 金額入力スタート
-(void)priceEditingStart:(UITextField*)textField
{
if([textField.text isEqualToString:@""]){
[self textField:_priceField shouldChangeCharactersInRange:NSMakeRange(0,0) replacementString:@"0"];
}
}
// 金額フォーマット
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *text = _priceField.text;
NSCharacterSet *charSet = nil;
NSString *numberChars = @"0123456789";
static NSNumberFormatter *numberFormatter;
if (!numberFormatter)
{
numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.numberStyle = NSNumberFormatterCurrencyStyle;
numberFormatter.currencyCode = @"JPY";
}
charSet = [NSCharacterSet characterSetWithCharactersInString:numberChars];
NSCharacterSet *invertedCharSet = [charSet invertedSet];
NSString *trimmedString = [string stringByTrimmingCharactersInSet:invertedCharSet];
text = [text stringByReplacingCharactersInRange:range withString:trimmedString];
text = [self deleteComma:text];
if([text length] < 10){
NSNumber *number = [numberFormatter numberFromString:text];
if (number == nil)
{
number = [NSNumber numberWithInt:0];
}
textField.text = [numberFormatter stringFromNumber:number];
}
return NO;
}
// カンマの削除
- (NSString *)deleteComma:(NSString *)targetString;
{
NSString *_mysetString = [NSString stringWithFormat:@"%@",targetString];
NSString *_mysetString2= [_mysetString stringByReplacingOccurrencesOfString:@"," withString:@""];
return _mysetString2;
}
@end